有关C的问题

gur007 2002-09-04 03:41:28
例:
main()
{float *p; //定义指针变量P
p=97; //给指针变量赋初值
…;
…;
}
问:C语言是先定义变量时即开辟内存空间,后把初值给内存,还是先定义变量类型,再赋初值时开辟内存空间,把初值给内存。

/我的主旨不在程序对与不对,而是想知道,内存空间是什么时候才分配给变量的,是在定义时,还是在赋值时,还有我想请教有没有关于C的编译的书籍,如果有请专家介绍几本,谢谢!
...全文
63 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
abbrdr 2002-09-04
  • 打赏
  • 举报
回复
在定義變量時,給變量分配空間,至於是否賦初值,這要看變量類型和編譯器的特點了,就c語言來說,一般的編譯器在碰到指針性變量時不會賦初值,只會得到一個隨機數,所以在用指針型變量時一定要先賦值後使用.
imafool 2002-09-04
  • 打赏
  • 举报
回复
编译时给空间,运行时给初值。
tinytot 2002-09-04
  • 打赏
  • 举报
回复
应该是前者.
main()
{float *p; //定义指针变量P
*p=97; //给指针变量赋初值
…;
…;
}
johnmack 2002-09-04
  • 打赏
  • 举报
回复
main()
{float *p; //分配空间
p = 97; //产生中间变量,P为中间变量的地址
}
gcx 2002-09-04
  • 打赏
  • 举报
回复
是在定义时。
wu4long 2002-09-04
  • 打赏
  • 举报
回复
这个问题你可以通过DEBUG看得出来.在C里面是在定义变量时就给该变量分配空间,至于赋初值只不过是在分配空间之后进行,否则值往什么地方放置?

main()
{float *p; //定义指针变量P,在这给P分配空间了
p=97; //给指针变量赋初值,给P所指向的地址进行赋值,当然直接赋97,系统会报错的,因为你指向了不该指向的空间
…;
…;
}


69,371

社区成员

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

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