C语言中字符串的定义问题

xiaochun_1999 2010-05-10 04:25:37
貌似在C语言中没有string类型的变量,如果想用字符串只能用char数组去拼。

在定义的时候
char a[]="abc";这种方式可以。
char a[]
a[]="abc"; 这种方式就不可以了。为啥呢?

但是好像下面有种方法可以:
char *a;
char b[]="abc";
a=b; 这样就可以

还有个问题就是如果在定义时不指定字符数组的元素个数,是不是就会按照实际得到值的个数算呢?

...全文
2167 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2010-05-11
  • 打赏
  • 举报
回复
用数组和字符指针都很方便就看LZ喜欢哪种
xiaochun_1999 2010-05-11
  • 打赏
  • 举报
回复
引用 2 楼 longer_0 的回复:


因为没有指定a数组的长度,在C语言中,不支持不定义长度的数组,除非是直接进行初始化。
第二种实现方法中a不再是一个数组,而是一个单纯的指针,所以可以。
指针不需要指定它指向的数据的总长度,只是保存一个头地址罢了。


也就是说使用指针定义一个字符数组(字符串)最简单也最方便了??

484这样呢?
xiaochun_1999 2010-05-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 longer_0 的回复:]

因为没有指定a数组的长度,在C语言中,不支持不定义长度的数组,除非是直接进行初始化。
第二种实现方法中a不再是一个数组,而是一个单纯的指针,所以可以。
指针不需要指定它指向的数据的总长度,只是保存一个头地址罢了。
[/Quote]

也就是说使用指针定义一个字符数组(字符串)最简单也最方便了??
xiaochun_1999 2010-05-10
  • 打赏
  • 举报
回复
谢谢大家啦。。。
RHuniSoft 2010-05-10
  • 打赏
  • 举报
回复
这个问题嘛。。a[]是一个char数组,而*b是一个char指针,对于a[]="abcd"是在定义时赋值,a[]实际是储存了5个字节,应经固定了,不能再在下面的程序赋值了,而对于*b为一个字符指针为4个字节,它储存的是一个地址,所以可以重新赋值。。只是赋值后地址内的内容变了而已。
常书 2010-05-10
  • 打赏
  • 举报
回复
C编译器在编译时必需为我们定义的数据分配空间。
char a[]="abc";编译器会根据char和"abc"计算所需空间,为4个字节。
char a[]; 这样子编译器是不知道它的空间的。

在定义时不指定字符数组的元素个数,后面必需跟初始化该数组的值,不然编译器是不会放过它的。
qzf368 2010-05-10
  • 打赏
  • 举报
回复
a[]="abc";

从未见过,这是什么赋值法?

左边到底是什么?
longer_0 2010-05-10
  • 打赏
  • 举报
回复
因为没有指定a数组的长度,在C语言中,不支持不定义长度的数组,除非是直接进行初始化。
第二种实现方法中a不再是一个数组,而是一个单纯的指针,所以可以。
指针不需要指定它指向的数据的总长度,只是保存一个头地址罢了。
wuyu637 2010-05-10
  • 打赏
  • 举报
回复
实际上问题在于老的c++标准不支持动态数组。

69,371

社区成员

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

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