首页 > 其他分享 >嵌入式-C语言基础:二维数组

嵌入式-C语言基础:二维数组

时间:2022-10-25 23:35:33浏览次数:65  
标签:arr 一维 元素 二维 嵌入式 地址 数组 printf C语言

二维数组的每个元素都是一个一维数组,例如int arr[2][3]={{1,2,3},{4,5,6}};

下面通过几个例子来对二维数组进行深入了解:二维数组可以看作是一个父数组,他的每个元素都是一个一维的子数组。

(1)数组名表示数组首元素的地址,那么arr表示的是谁的地址?arr表示的是ar首元素的地址,也就是arr[0]的地址,同样arr[0],arr[1]也是两个子元素一维数组的数组名,可以分别用数组名a,b来代替,那么arr[0][0]表示a[0],ar[1][0]表示b[0],所以a(arr[0]),b(arr[1])作为数组名f分别也是a[0]和b[0]的地址,也就是arr[0][0]和arr[0][1]的地址:

#include<stdio.h>

int main()
{
    int arr[2][3]={{1,2,3},{4,5,6}};
    printf("arr表示的是arr的首元素地址:%p\n",arr);
    printf("*(arr+0)表示的是arr的首元素地址:%p\n",*(arr+0));//arr表示的是arr的首元素arr[0]的地址,那么*(arr+0)表示的就是arr[0],arr[0]表示arr[0][0]的地址
    printf("&arr[0][0]表示的是arr[0][0]的首元素地址:%p\n",&arr[0][0]);
    printf("&arr[0]表示的是arr的首元素地址:%p\n",&arr[0]);
    printf("arr[0]表示的是arr[0]这个子一维数组的首元素地址:%p\n",arr[0]);
    
    
    printf("arr[1]表示的是arr[1]这个子一维数组arr[1]的首元素地址:%p\n",arr[1]);
    printf("&arr[1][0]表示的是arr[1]这个子一维数组arr[1]的首元素地址:%p\n",&arr[1][0]);
    printf("arr[1]表示的是arr[1]这个子一维数组arr[1]的首元素地址:%p\n",arr[1]);
    printf("*(arr+1)+0表示的是arr[1]这个子一维数组arr[1]的首元素地址:%p,偏移1后:%p\n\n",*(arr+1)+0,*(arr+1)+1);//偏移到arr[1]下一个元素的地址
    
    return 0;
}

 

输出结果

arr表示的是arr的首元素地址:000000000061FE00
*(arr+0)表示的是arr的首元素地址:000000000061FE00
&arr[0][0]表示的是arr[0][0]的首元素地址:000000000061FE00
&arr[0]表示的是arr的首元素地址:000000000061FE00
arr[0]表示的是arr[0]这个子一维数组的首元素地址:000000000061FE00


arr[1]表示的是arr[1]这个子一维数组arr[1]的首元素地址:000000000061FE0C
&arr[1][0]表示的是arr[1]这个子一维数组arr[1]的首元素地址:000000000061FE0C
arr[1]表示的是arr[1]这个子一维数组arr[1]的首元素地址:000000000061FE0C
*(arr+1)+0表示的是arr[1]这个子一维数组arr[1]的首元素地址:000000000061FE0C,偏移1后:000000000061FE10    

 总结:*(p+i)+j和a[i][j]是等价的

 

标签:arr,一维,元素,二维,嵌入式,地址,数组,printf,C语言
From: https://www.cnblogs.com/zxtang/p/16826804.html

相关文章

  • 嵌入式-C语言基础:
    在C语言中,数组名代表数组中首元素的地址,所以,下面两句获取数组的首地址是等价的:#include<stdio.h>intmain(){inta[5]={1,2,3,4,5};int*p=&a[0];int......
  • 【单片机/嵌入式】【知识】嵌入式硬件电路设计六大基本功【转载】
     原文链接https://www.bilibili.com/read/cv19300192嵌入式设计是个庞大的工程,今天就说说硬件电路设计方面的几个注意事项,首先,我们了解下嵌入式的硬件构架。我......
  • C语言简单习题1
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intsum(inta){ intc=0; staticintb=3; c+=1; b+=2; return(a+b+c);}intmain(){ inti......
  • 二维数组--JAVA
    一.输出二维数组publicclassvar{publicstaticvoidmain(String[]args){int[][]arr={{1,0,0},{0,1,0},{0,0,1}};for(inti=0;i......
  • 二维数组
    二位数组的创建和初始化,二维数组的使用,二维数组在内存中的存储intarr[3][4]; //表示3行4列,每个元素都是整形#include<stdio.h>intmain(){//intarr[3][4];/......
  • 嵌入式wifi连接获取天气信息
    单连接TCPClient使用串口sscom软件,直接输入AT命令驱动ESP8266AT+CWMODE=1-客户端模式AT+CWMODE=2-服务端模式AT+CWMODE=3-混合模式//设置WIFI模式AT+CWMODE=3//连接......
  • C语言电话号码录入查询及修改系统
    C语言电话号码录入查询及修改系统题目B1:电话号码录入、查询及修改系统(一)课题内容利用哈希表设计并实现电话号码录入、查询及修改系统。(二)课题要求(1)设每个记录......
  • 实验2 C语言控制语句应用编程
    #include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5intmain(){intnumber;inti;srand(time(0));for(i=0;i<N;++i)......
  • Python——sorted自定义对一维二维数组排序
    一维数组arr=['15:30','16:30','10:00','8:00','9:00','13:30','14:30','11:00']#使用lamda自定义规则进行排序sort_arr=sorted(arr,key=lambdax:int(x......
  • 【C语言进阶】二.指针(中)
    (五)函数指针1.定义:指向函数的指针:#include<stdio.h>intAdd(inta,intb){intz=0;z=a+b;returnz;}intmain(){inta=10;intb=20;printf("%d\n",Ad......