栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言二级指针与数组

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言二级指针与数组

先看一段代码:

#include 

int main() {
    int matrix[2][5] = {{1, 2, 3, 4, 5},
                        {6, 7, 8, 9, 10}};
    printf("matrix=%pt,matrix+1=%pn", matrix, matrix + 1);
    printf("matrix[0]=%pt,matrix[0]+1=%pn", matrix[0], matrix[0] + 1);
    printf("*matrix=%pt,*matrix+1=%pn", *matrix, *matrix + 1);
    printf("&matrix[0]=%pt,&matrix[0]+1=%pn", &matrix[0], &matrix[0]+1);
    printf("&matrix[0][0]=%pt,&matrix[0][0]+1=%pn", &matrix[0][0], &matrix[0][0]+1);
    printf("matrix[0][0]=%dn", matrix[0][0]);
    printf("*matrix[0]=%dn", *matrix[0]);
    printf("**matrix=%dn", **matrix);
    printf("matrix[1][1]=%dn", matrix[1][1]);
    printf("*(*(matrix+1)+1)=%dn", *(*(matrix + 1) + 1));
    printf("*((*matrix+1)+1)=%dn", *((*matrix + 1) + 1));
    return 0;
}



输出:

matrix=0061FEA8 		,matrix+1=0061FEBC
matrix[0]=0061FEA8      ,matrix[0]+1=0061FEAC
*matrix=0061FEA8        ,*matrix+1=0061FEAC
&matrix[0]=0061FEA8     ,&matrix[0]+1=0061FEBC
&matrix[0][0]=0061FEA8  ,&matrix[0][0]+1=0061FEAC
matrix[0][0]=1
*matrix[0]=1
**matrix=1
matrix[1][1]=7
*(*(matrix+1)+1)=7
*((*matrix+1)+1)=3

虽然数值上,matrix=matrix[0]=*matrix=&matrix[0]=&matrix[0][0],但是含义却不同。
1、matrix表示一个特殊的数组指针,数组中的每个元素又是一个数组,这个特殊数组含有2个元素,每个元素占用字节为BC-A8=14h=20,即4×5=20,matrix+1,则指针地址数值+20
2、matrix[0]表示一个普通的一维数组指针,数组中含有5个元素,每个元素占用4个字节,数组总长度为20个字节,matrix[0]+1,则指针地址值+4
3、*matrix=matrix[0]=&matrix[0][0]
4、matrix=&matrix[0]
5、遍历二维数组中每个元素,使用*(*(matrix+i)+j),i表示行,j表示列
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/938019.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号