首页  

C语言指针和二维数组     所属分类 c 浏览量 829
二维数组 行和列 
内存顺序存储 先放第一行
int a[2][3] ={0,1,2,3,4,5};
2行3列
先存放 a[0] 行,再存放 a[1] 行

int (*p)[3] = a;

a+i == p+i
a[i] == p[i] == *(a+i) == *(p+i)
a[i][j] == p[i][j] == *(a[i]+j) == *(p[i]+j) == *(*(a+i)+j) == *(*(p+i)+j)


指针数组和二维数组指针

#include "stdio.h"
int main(){
  int arr[2][3] = {0,1,2,3,4,5};
  // 数组指针
  int (*p)[3] = arr;
  
  printf("%d %d %d %d %d %d \n",arr[1][2],p[1][2],*(arr[1]+2),*(p[1]+2)  , *(*(arr+1) +2) , *(*(p+1) +2) );
  
  // 指针数组
  int *parr[3] = {&arr[0][0],&arr[0][1],&arr[0][2]};
  
  for(int i=0;i < 3;i++){
     int*pint = parr[i];
     printf("%p %d \n",pint,*pint);
  }
  return 0;
}


C语言二维数组 二维数组函数入参用法

上一篇     下一篇
二维数组函数入参用法

二维整型数组参数传递的三种方式

C语言指针运算和指针类型

各种指针的大小

C语言数据结构笔记

docker VS podman