在不工作的情况下为数组分配指针,但反过来也可以

Assigning a pointer to an array in not working but the reverse is fine

本文关键字:指针 反过来 也可以 分配 数组 工作 情况下      更新时间:2023-10-16

a中的值被复制到c指针:

char a[] = "I am ok";
char *c = a;

获取编译错误:

char *c = "I am ok";
char a[] = c;

为什么?

数组只能使用聚合初始化进行初始化(与第一种情况一样,文字字符串有特殊情况(。

根据语言,第二种情况下的初始化部分根本不正确。

此外,文字字符串(在第二种情况下用于c的初始化(是常量字符的数组,这意味着您不能制作指向文字字符串的非常量指针。您必须使用const char*


至于为什么它在第一种情况下工作,首先数组a不是常数,因此不需要指向const的指针。其次,当使用数组时,它可以衰减到指向其第一个元素的指针。

因此定义:

char* c = a;

真的是这样吗:

char* c = &a[0];

因为

char *c 

是指针的声明,而不是其内容,它只能由Adress 初始化