@Arbalest-Laevatain
2018-05-14T16:02:25.000000Z
字数 680
阅读 682
C语言 C++
float* pointer_1;int* pointer_2;
基类型* 变量名
int a;int*p=&a;
int* p,a=123;p=&a;//或int* p;int a=123;p=&a;
int* p,a=123;*p=a;
结果:
Error C4700 uninitialized local variable 'p' used C语言
错因:
由于指针变量p没有初始化,很可能是指向了系统中某一具有功能的内存地址,此时再对其赋值很有可能会造成致命错误
int *p=NULL;int a;p=&a;printf("%d\n",*p);
结果:
没有任何输出
错因:
由于把指针变量初始化为符号常量NULL,也就是0。内存地址初始化为0,实际上运行时编译器并没有给指针p分配内存空间,所以p是无法对任何数据内存地址进行访问。故没有任何返回值。
在函数定义中的错误
//定义一个交换两个变量的函数void swap(int*p1,int*p2){int*temp=p1;p1=p2;p2=temp;}
结果:
函数并没有发挥作用,没有交换两个数
错因:
因为swap函数中只是对形参指针的值进行操作,由于形参的值无法传回实参,所以无意义。正确的写法应该是:
void swap(int*p1, int*p2){int temp = *p1;*p1 = *p2;*p2 = temp;}
其实是在指针做完某件事后,暂时把NULL复制给它,可以防止出现“野指针”
