gpt4 book ai didi

c - 用值初始化数组(指针)

转载 作者:行者123 更新时间:2023-11-30 14:50:23 24 4
gpt4 key购买 nike

所以,在 C 语言中,这完全有效:

int myArray[] = {1, 2, 3};

为什么以下内容在访问元素时会出现运行时错误?

int * myArray2 = {1, 2, 3};
myArray2[0];

myArray2[0]基本上意味着*myArray2 ,这也不起作用?

最佳答案

我认为根本的区别在于声明数组隐式分配内存,而声明指针则不会。

int myArray[3]; 声明一个数组并为 3 个 int 值分配足够的内存。

int myArray[] = {1,2,3}; 是一个小语法糖,它让数组的大小由初始化值确定。就内存分配而言,最终结果与前面的示例相同。

int *myArray; 声明一个指向 int 值的指针。它不会分配任何内存来存储 int 值。

据我所知,

int *myArray = {1,2,3}; 不受支持的语法。我希望你会因此得到一个编译器错误。 (但我已经很多年没有完成实际的 C 编码了。)即使编译器允许它通过,分配也会失败,因为没有分配内存来存储值。

虽然您可以使用数组语法引用指针变量,但这仅在您已分配内存并将其地址分配给指针时才有效。

关于c - 用值初始化数组(指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49041099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com