a中的值被复制到c指针:
char a[] = "I am ok";
char *c = a;
获取编译错误:
char *c = "I am ok";
char a[] = c;
为什么?
答案 0 :(得分:3)
只能使用aggregate initialization初始化数组(在特殊情况下,如第一种情况那样使用文字字符串的特殊情况)。
根据语言,第二种情况下的初始化部分根本不正确。
此外,文字字符串(在第二种情况下在var data = [
{
"Id": 1,
"sku": "abc",
"name": "Abbey Black Round Glass and Chrome 3 Tier Stand",
"qty": 14
},
{
"Id": 3,
"sku": "abc",
"name": "Ammy Black Glass and Chrome 5 Tier Corner Stand",
"qty": 0
},
{
"Id": 4,
"sku": "abc",
"name": "Barcelona Adjustable Gas Lift Black Bar Stool (Set of 2)",
"qty": 23
}
];
var res = data.map(({sku, qty}) => ({sku, qty}));
console.log(res);
的初始化中使用)是恒定字符数组,这意味着您不能将非恒定指针指向文字字符串。您必须使用c
。
关于在第一种情况下它为何起作用的原因,首先数组const char*
不是常数,因此不需要指向a
的指针。其次,当使用数组时,它可以衰减到指向其第一个元素的指针。
所以定义:
const
确实是这样:
char* c = a;
答案 1 :(得分:-1)
因为
char *c
是指针的声明,而不是其内容,只能由地址初始化