首页 > 解决方案 > 分配一个指向数组的指针不起作用但反过来很好

问题描述

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

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

得到编译错误:

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

为什么?

标签: c++arrayspointers

解决方案


数组只能使用聚合初始化来初始化(文字字符串的特殊情况,如第一种情况所用)。

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

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


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

所以定义:

char* c = a;

真的是这样:

char* c = &a[0];

推荐阅读