分配空间

jxnuzhouguohong 2012-03-24 07:31:19

char *a;
scanf("%s",a);



1.谭老的书是说定义了一个指针变量未对它初始化,所以a指向的区域的值是未知值,所以输入会导致错误。

2.C与指针是说声明一个指针变量时,编译器只为指针本身保留内存空间,它并不为任何字符型值分配内存空间。

个人认为是是不是a是一个随机地址(随机单元还是存在的),并未分配一个与a关联的单元。
就比如:

int i;
printf("%d",i);


这个还是有值输出的。所以说只有定义(初始化了)才分配了空间?不解!!!

int *p;
printf("%d",*p);


这个就会运行报错。

大牛分析下~~~~




...全文
158 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiyoulaoyuanjia 2012-03-25
  • 打赏
  • 举报
回复
1.谭老的书是说定义了一个指针变量未对它初始化,所以a指向的区域的值是未知值,所以输入会导致错误。

2.C与指针是说声明一个指针变量时,编译器只为指针本身保留内存空间,它并不为任何字符型值分配内存空间。

说法没有矛盾 ++!
developer 2012-03-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jxnuzhouguohong 的回复:]
引用 4 楼 woz1234 的回复:

未初始化时,指针只是一个变量,未指向任何内存地址。这样理解对不对,偶也来学习一下。


嗯,我认为是这个样子的,只是一个指针变量而已,就像声明了int i;一样。
但是谭老的说法如我发帖中所说。
[/Quote]

的确和 int i ;一样

如果 局部变量未初始化

你可以看下在内存中 是怎样存储的

指针相同
lanmeng521131485 2012-03-24
  • 打赏
  • 举报
回复
char *p;
声明的时候只会分配一个存放char类型地址的位置,至于p的位置是什么由于没有初始化所以你在赋值的时候,有可能出现问题(比如p中的位置是其他的内存地址)
jiuchang 2012-03-24
  • 打赏
  • 举报
回复
每个程序可以访问的内存是有限制的
内存未初始化时,其值是随机的,有可能指向任何一块地址空间
如果指向了系统限制访问的内存地址,则会导致程序出错
AnYidan 2012-03-24
  • 打赏
  • 举报
回复
1.谭老的书是说定义了一个指针变量未对它初始化,所以a指向的区域的值是未知值,所以输入会导致错误。

2.C与指针是说声明一个指针变量时,编译器只为指针本身保留内存空间,它并不为任何字符型值分配内存空间。

说法没有矛盾,指针 与 指针指向的空间是两个事儿,
jxnuzhouguohong 2012-03-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 woz1234 的回复:]

未初始化时,指针只是一个变量,未指向任何内存地址。这样理解对不对,偶也来学习一下。
[/Quote]

嗯,我认为是这个样子的,只是一个指针变量而已,就像声明了int i;一样。
但是谭老的说法如我发帖中所说。
bluezhao 2012-03-24
  • 打赏
  • 举报
回复
未初始化时,指针只是一个变量,未指向任何内存地址。这样理解对不对,偶也来学习一下。
jxnuzhouguohong 2012-03-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jiuchang 的回复:]

C/C++ code
int i;
printf("%d",i);

这个是不对的,打印出来值是因为i没有初始化,它所在的内存空间可能为任何值
正确的用法应该是C/C++ code
printf("%d",&i);
[/Quote]

嗯,我重点是问char *a;
scanf("%s",a);

jiuchang 2012-03-24
  • 打赏
  • 举报
回复
int i;
printf("%d",i);

这个是不对的,打印出来值是因为i没有初始化,它所在的内存空间可能为任何值
正确的用法应该是
printf("%d",&i);

jxnuzhouguohong 2012-03-24
  • 打赏
  • 举报
回复
大家在我眼里都是大牛。

然后觉得应该是heap 和stack的事情,就是纠结于谭老那一说法,大家给分析下,谢谢!

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧