内存分配的一个问题!

nickcheng 2003-10-16 11:41:25
这样定义了一个结构
struct aa
{
char *ss;
}bb;

象下面这么调用总有错!
bb.ss[0]='a';
但是如果为ss分配内存空间后就可以!

但是如果这样定义
char *str;
再这样使用
str[0]='a';
就没有问题

这是为什么?
...全文
37 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
playboyxp 2003-10-16
  • 打赏
  • 举报
回复
你的指针还没分配内存,不能这么用
darcymei 2003-10-16
  • 打赏
  • 举报
回复
bb.ss="aaa"
No problem!ss会指向系统为你分配一段const字符串的首地址
bb.ss[0]='a'
Big problem!对未知内存进行赋值操作。
tonybaobao 2003-10-16
  • 打赏
  • 举报
回复
都是有问题的。你要记住,凡是定义指针后,一定要对其分配内存空间,否则指针不知道指向何处,因此你用str[0]所指向的内容就未知,如果对其进行赋值岂不是很危险?
Hot_Forever 2003-10-16
  • 打赏
  • 举报
回复
不过按照你的赋值方法的话,2种情况下都是有问题的
Hot_Forever 2003-10-16
  • 打赏
  • 举报
回复
当你用下面那种形式的时候,str="aaaaaaa",编译器会自动的为str分配内存,而在结构体中间的话,编译器不会自动给str分配内存,所以出错
likangnian0128 2003-10-16
  • 打赏
  • 举报
回复
char *str;
str[0]='a';

ft,这个绝对是有问题的。
liao2001 2003-10-16
  • 打赏
  • 举报
回复
都有问题,没有问题是因为你很走运,你可以去摸奖了!
roselu 2003-10-16
  • 打赏
  • 举报
回复
学习!

69,369

社区成员

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

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