指针变量涉及的两个要素:
1.指针对应的内存地址是哪个地址(指针的值体现的)
2.这个内存地址对应的内存大小是多大(指针的类型体现的)
有一种特殊的指针,只有地址,没有内存对应的大小
void* 正因为没有限制内存大小,void*对应的内存可以是任意大小
void*不能解引用.但void*非常有用
void*相当于是把类型完全交给程序猿来控制和保证.
空指针:特殊的指针,地址是0,NULL,和void*完全不一样
空指针是一种特殊的野指针,一般不能使用,只能在使用操作系统内核时才能使用
一个指针占多少字节?
如果是32位系统,4个字节;如果是64位系统,8个字节(一定要带系统前提)
一个int占几个字节?
如果是32位系统,4个字节;如果是64位系统,8个字节(一定要带系统前提)
看一个典型的野指针代码
#include<stdio.h> #include<stdlib.h> int* Func(){ int num = 10; return # } int main(){ int* p = Func(); printf("%d\n", *p); system("pause"); return 0; }
当使用完函数之后,函数空间被释放,当你再次打印*p时,读取的地址不一定是原地址
还有什么是野指针?
例如:指针未初始化,指针越界

浙公网安备 33010602011771号