首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解引用%2%d数组

解引用%2%d数组
EN

Stack Overflow用户
提问于 2010-05-28 01:06:04
回答 2查看 141关注 0票数 2

请看这段代码:

代码语言:javascript
复制
#include<stdio.h>
int main()
{
int arr[2][2]={1,2,3,4};
printf("%d %u %u",**arr,*arr,arr);
return 0;
}

当我编译并执行这个程序时,我得到了相同的arr和*arr的值,*arr是2 d数组的起始地址。例如:-1 3214506 3214506

我的问题是,为什么取消引用arr ( *arr )不打印存储在arr中包含的地址的值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-28 01:09:01

*arr是长度为2的整数数组类型,因此它与arr共享相同的地址。它们都指向数组的开头,这是相同的位置。

票数 5
EN

Stack Overflow用户

发布于 2010-05-28 05:36:44

在C语言中,2d数组在内存中不是表示为数组的数组;相反,它是一个常规的1d数组,其中需要第一个给定的维数,以便在执行时计算数组内的正确偏移量。这就是为什么在多维数组中,您总是需要指定除最后一个维数之外的所有维数(这不是必需的);例如,如果您声明如下数组

代码语言:javascript
复制
int a[2][3][4];

该数组将在内存中表示为总共2*3*4个元素的单个数组。试图访问(i,j,k)位置的元素,实际上将被转换为访问普通数组中的元素3*i+4*j+k。在某种意义上,需要初始维度才能知道在一维数组中将“换行符”放在哪里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2923214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档