【发布时间】:2015-11-13 08:20:12
【问题描述】:
char *s={'h','e','l','l','o','\0'}; --- 给出警告:
warning: (near initialization for ‘s’)
warning: excess elements in scalar initializer
但是char *s="hello"; 通过在只读内存中为 6 个字符分配内存空间并指向该特定位置来显示 hello。
但是char *s={'h','e','l','l','o','\0'}; 到底是什么?它有何不同?
【问题讨论】:
-
{ … }本身不是一个数组,它是一个花括号初始化列表。char *s = { 'h', 'e', … }正在尝试使用字符'h'初始化指针并丢弃其余字符。 (但所有这些都可以仅从错误消息中推断出来。)
标签: c