gpt4 book ai didi

指针数组和二维数组可以视为相同吗

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

任何人都可以告诉我们这两个实体是否 - 即二维数组 char array[][9]和指针数组 char *array[9]相同还是不同??

最佳答案

它们是不同的。

最显着的区别是,在数组的情况下,元素将在内存中连续排列,但在指针数组的情况下,它们不会。

为了能够使用指针数组的元素,您需要使它们指向一些有效的内存,您可以通过使用 malloc() 或指向数组来实现例如。在这两种情况下,指针指向的潜在数组的元素都不连续。

您的困惑可能是由于数组在语法上可以用作指针,因为如果您将数组传递给需要指针的函数,那么它相当于指向该数组的第一个元素的指针。

另外,

int x[3] = {1, 2, 3};
int *y = x;

是有效的,您可以像使用数组一样使用 y,即使它不是数组。它是一个指针,您可以使用它通过指针算术来遍历数组x的元素。

事实上,表达此类算术的一种方法是使用 [] 语法

int value = y[1]

相当于对y执行指针算术运算并取消引用它,完全相当于

int value = *(y + 1);

即移动到 y 开头后 (1×sizeof *y) 个字节的元素并获取那里的值。

关于指针数组和二维数组可以视为相同吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45146275/

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