所以,在 C 语言中,这完全有效:
int myArray[] = {1, 2, 3};
为什么以下内容在访问元素时会出现运行时错误?
int * myArray2 = {1, 2, 3};
myArray2[0];
when myArray2[0]
基本上意味着*myArray2
,这也不起作用?
我认为根本的区别在于声明数组隐式分配内存,而声明指针则不会。
int myArray[3];
声明一个数组并为 3 分配足够的内存int
values.
int myArray[] = {1,2,3};
是一个小语法糖,它让数组的大小由初始化值确定。就内存分配而言,最终结果与前面的示例相同。
int *myArray;
声明一个指向int
价值。它不分配任何内存来存储int
value.
int *myArray = {1,2,3};
据我所知,不支持语法。我希望你会因此得到一个编译器错误。 (但我已经很多年没有完成实际的 C 编码了。)即使编译器允许它通过,分配也会失败,因为没有分配内存来存储值。
虽然您可以使用数组语法引用指针变量,但这仅在您已分配内存并将其地址分配给指针时才有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)