博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c语言二维数组与指针
阅读量:6958 次
发布时间:2019-06-27

本文共 1425 字,大约阅读时间需要 4 分钟。

  问题,以下输出的结果是什么,区别在于哪?

void main(){    int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };    //输出的3个地址都一样,差别在哪?    printf("\n%x",a);      printf("\n%x",*a);     printf("\n%x",&a);     system("pause");}

  像我这种野生码农看到这个问题基本懵了,好吧我们先通过一维数组来理解。

void main(){    int num[5] = { 1,2,3,4,5 };    printf("\n%x", num);    //第一个元素的首地址,1个int元素4个字节    printf("\n%x", &num);   //数组的地址,数组5个元素,20个字节。        //printf("\n%d", (*(&num))[2]); 可以知道 (*(&num))就是数组 {1,2,3,4,5}-> &num是指向整个数组的地址    //区别    printf("\n%d", sizeof(*num)); //4   *num 根据类型地址取出内容  => 1 ,4字节    printf("\n%d", sizeof(*&num));//20  *&num 根据类型地址取出内容            getchar();}

  通过上面的例子,可以知道

  1. num就是指向数组的首地址,由此可得 *num 就是数组首地址的值 1。

  2. &num 就是指向整个数组的地址。

于是我们再来看上面二维数组的例子解答。

1 void main() 2 { 3     int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; 4      5     //打印出整个数组的元素和对应的地址 6     for (int i = 0; i < 3; i++) 7     { 8         for (int j = 0; j < 4; j++) 9         {10             printf("%d,%x  ",*(*(a+i)+j), *(a + i) + j);11         }12         printf("\n");13     }14 15     //3个结果都一样,差别在哪?16     printf("\n%x",a);  //a行指针17     printf("\n%x",*a); //a行指针的值 {1,2,3,4}18     printf("\n%x",&a); //整个二维数组的地址19     20     printf("\n%d",sizeof(*a));//  16  -> *a代表一个行的数组 {1,2,3,4} , 21     printf("\n%d", sizeof(**a));// 4  -> 有上可以推断 **a 代表第一行数组首地址  122     printf("\n%d", sizeof(*&a));// 48 -> &a代表整个二维数组的首地址,则 *(&a) 取整个二维数组的内容,12个元素,则48 个字节    23 24 25     system("pause");26 }

  

转载地址:http://dtmil.baihongyu.com/

你可能感兴趣的文章
你所不了解的静态路由特点及配置
查看>>
SQL条件查询及数据类型cast转换
查看>>
多套方案来提高python web框架的并发处理能力
查看>>
不好,两群AI打起来了!“幕后主使”是上海交大~
查看>>
图解RHEL6从安装光盘中进行yum安装
查看>>
2016年第11本:效率高手‘6不’诀
查看>>
Eclipse 实用技巧
查看>>
linux下踢掉一个用户(心跳包解决ssh断开连接)
查看>>
ZedGraph很好很强大
查看>>
遍历ArrayList易犯错误
查看>>
图像保存到XML文件和从XML中取出图像显示
查看>>
优化游标性能
查看>>
博客文章 快速通道
查看>>
【转】JavaScript写的Cookie类
查看>>
[转]Vi/Vim查找替换使用方法
查看>>
Visual Studio .NET 2003 IDE 快捷键(转)
查看>>
[转] 使用SVN进行源码管理
查看>>
POSIX 线程的创建与退出
查看>>
Android Fragment间对象传递
查看>>
如何去高大上的下载电影天堂的内容
查看>>