当前位置: 首页 > >

指针的初始化

发布时间:

有下面的代码


#include
#include

int main()
{
int* a;
*a = 1;
system("pause");
return 0;
}

我在这里声明创建了一个名为a指针变量,然后把1赋值给a所指向的那块内存空间。编译结果如下:

a未初始化,到底指向哪里根本我们不得而知。所以我们在进行赋值操作的时候可能有下面几种情况:
1.a的初始值是一个非法地址,赋值语句出错,程序终止。它提示程序访问的是一个并未分配给程序的内存位置。
2.可能指针包含一个合法化的地址,而赋值语句更改了它。


所以在使用指针的时候一定要确保指针已经初始化了。


当我们不知道给指针变量初始化什么的时候我们一般初始化为NULL:`


#include
#include

int main()
{
int* a = NULL;
*a = 1;
system("pause");
return 0;
}

编译结果也是有问题的:

这是因为NULL指针是一个特殊的指针变量,不指向任何内存,用来表示这个指针目前未指向任何位置。
所以对NULL指针进行解引用操作是非法的。
对指针进行解引用之前,要确定它不是NULL指针


#include
#include

int main()
{
int n = 0;
int* a = NULL;
a = &n;
*a = 1;
printf("%d
", n);
system("pause");
return 0;
}



友情链接: