【发布时间】:2012-01-30 19:04:48
【问题描述】:
鉴于这些是允许的:
char c[] = "abc";
char c[] = {'a','b','c','\0'}
char *c = "abc";
那为什么不允许呢?
char *c = {'a','b','c','\0'}; // error: a char cannot initialize a char*
如果编译器将字符串文字解释为以 null 结尾的字符数组,那么我会认为它等同于上面的语句 3,不是吗?
同样,为什么不允许这样做:
int arr[3];
int *i = arr; // OK
int *i = {1,2,3} // error: an int cannot initialize an int*
这不是一个大问题,我只是好奇.. 我想问题归结为分配给指针时字符串文字(或声明的整数数组)和字符元素数组之间的区别是什么?
【问题讨论】:
标签: c++ c arrays string pointers