|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 1040502110 于 2014-10-8 22:27 编辑
书上写的是指针使用必须要初始化,也就是对指针进行赋值操作的时候,由于指针是乱指的,如果不初始化直接写入,那么编译后的程序无法正常运行,例如
#include <stdio.h>
int main(void)
{
int *a;
*a = 10;
printf("%d\n",*a);
return 0;
}
这个很明显是错误的。
如果改成以下
#include <stdio.h>
int main(void)
{
int *a, b;
a = &b;
*a = 10;
printf("%d\n",*a);
return 0;
}
这样就正确了,因为初始化了。
但是以下的几个问题我实在是想不透,希望高手详解以下。
#include <stdio.h>
int main(void)
{
char *s[2]; //为什么这个指针数组中的元素没有初始化就可以直接写入?如果指针指到系统区后果会是什么?
s[0] = "你";
s[1] = "好!";
printf("%s%s\n",s[0],s[1]);
return 0;
}
还有下面的
int main(void)
{
int *a;
int x[2] = {10,20};
a = x; // 虽然这里的x等价于&x[0],写成x就变成地址值了。但是为什么不用初始化就可以直接给指针赋值。
printf("%d\n",*a);
return 0;
}
|
|