鱼C论坛

 找回密码
 立即注册
查看: 2448|回复: 3

指针使用必须要初始化赋值?求大神详解。

[复制链接]
发表于 2014-10-8 22:24:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-7 05:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表