【发布时间】:2018-08-09 00:20:13
【问题描述】:
因此,在 C 语言中,这完全有效:
int myArray[] = {1, 2, 3};
为什么在访问元素时出现以下运行时错误?
int * myArray2 = {1, 2, 3};
myArray2[0];
当myArray2[0] 基本上表示*myArray2 时,这也不行吗?
【问题讨论】:
-
int * myArray2 = {1, 2, 3};是一个错误;如果您没有看到错误消息,请调整您的编译器设置。鉴于代码首先应该是编译错误,因此运行时行为毫无意义 -
所以 {1, ...} 只有在将变量显式声明为数组时才有可能?
-
数组和结构可以有多个初始化器(每个元素一个),指针唯一可能的初始化器是内存位置的地址(或空)
-
指针不是数组,数组也不是指针。
标签: c arrays pointers exception