char *a与char a[MAX]有何具体区别?

sunxking 2002-02-26 12:37:19
在BC5中有如下语句:
如:
char *a;
char b[100];

a=""; //正确
// b=""; 错误!

a=NULL; //正确
// b=NULL; 错误!

第一个错误是为何呢?
...全文
303 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
windindance 2002-02-26
  • 打赏
  • 举报
回复
应该用strcpy(b,"");
kingcaiyao 2002-02-26
  • 打赏
  • 举报
回复
第一个当然有错误,当赋值一字符串给一字符数组时,字符数组中的每个元素必须有确定的ASCII码值,而""没有确定的ASCII码值,即是说一个字符为空,它应是chr(0)。
zheng_can 2002-02-26
  • 打赏
  • 举报
回复
b是常量 const
不能赋值
wyb_45 2002-02-26
  • 打赏
  • 举报
回复
但使用未分配内存空间的指针时,系统当然会报错了。
wyb_45 2002-02-26
  • 打赏
  • 举报
回复
当然,这是C语言的范围。
char *a;//是定义一个指针。但还没分配内存空间。
a=new char(50);//分配内存空间
char b[100];//定义一个char数组大小100。当然已经分配内存空间


HEROIN 2002-02-26
  • 打赏
  • 举报
回复
char *a的内存序程序分配
char b[MAX]由系统分配
Behard 2002-02-26
  • 打赏
  • 举报
回复
char *a:是一个指针,可以用 strcpy()
char b[MAX]:是一个数组,b代表的是数组的手地址,是一个 const 值,不能赋值,可以用用 strcpy 操作或者 b[i]=(int)
maxying 2002-02-26
  • 打赏
  • 举报
回复
b是数组屋不能那样负值,而a至一个指针,他只是一个志向内存某个位置的值,你给它负值是允许的,那相当于你改变了它的指向
kimryo 2002-02-26
  • 打赏
  • 举报
回复
b是一个const指针啊,不能b=""; .

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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