首页 技术 正文
技术 2022年11月16日
0 收藏 962 点赞 3,219 浏览 1874 个字

指向一维数组的指针   char (*p)[10] ;
指向一维数组的指针类型 typedef  char(*TYPE_P2ARRAY)[10]  ;   
该指针可以指向数组 ,且使用起来效果节本相同,但指针与数组并不等价。{sizeof结果不同  , 且该指针还可以指向除此之外其他类型的数据。 }

#include <stdio.h>typedef int (*TP_PARRY1)[3] ;#define Uart_Printf printf
void f1(void)
{
int a[2][3] = { {0,1,2},{10,11,12}};
// a : 二维数组名 , equal : 指向一维数组{0,1,2}的指针
TP_PARRY1 p = a;
int (*q)[3] = a; //int (*t)[2] = a;//warning: initialization from incompatible pointer type
//int** x = a; // CRITICAL ERROR, may lead to Segmentation fault. NO space for PTRs.//指针结合律:1 (*q)括号最高优先级,表示q是一个指针。
// 2 向右 [] , 表示指向一个数组
// 3 右边没有了,向左,表示该数组的元素是int型。
Uart_Printf("a00:%d\n",a[0][0]);
Uart_Printf("a01:%d\n",a[0][1]);
Uart_Printf("a02:%d\n",a[0][2]);
Uart_Printf("a10:%d\n",a[1][0]);
Uart_Printf("a11:%d\n",a[1][1]);
Uart_Printf("a12:%d\n",a[1][2]);
Uart_Printf("p00:%d\n",a[0][0]);
Uart_Printf("p01:%d\n",a[0][1]);
Uart_Printf("p02:%d\n",a[0][2]);
Uart_Printf("p10:%d\n",a[1][0]);
Uart_Printf("p11:%d\n",a[1][1]);
Uart_Printf("p12:%d\n",a[1][2]); Uart_Printf("q00:%d\n",a[0][0]);
Uart_Printf("q01:%d\n",a[0][1]);
Uart_Printf("q02:%d\n",a[0][2]);
Uart_Printf("q10:%d\n",a[1][0]);
Uart_Printf("q11:%d\n",a[1][1]);
Uart_Printf("q12:%d\n",a[1][2]); #if 0
//Segmentation fault
Uart_Printf("x00:%d\n",x[0][0]);
Uart_Printf("x01:%d\n",x[0][1]);
Uart_Printf("x02:%d\n",x[0][2]);
Uart_Printf("x10:%d\n",x[1][0]);
Uart_Printf("x11:%d\n",x[1][1]);
Uart_Printf("x12:%d\n",x[1][2]);
#endif}int main()
{
f1();
}
/*
root@oucaijun:/work/dcc# gcc *.c; ./a.out
a00:0
a01:1
a02:2
a10:10
a11:11
a12:12
p00:0
p01:1
p02:2
p10:10
p11:11
p12:12
q00:0
q01:1
q02:2
q10:10
q11:11
q12:12
*/

  

二维数组(数组名与地址的关系)

先定义一个二维数组array以及指向它的指针p_array:

char array[3][1000] ;

typedef char CHAR_ARRY2[3][1000] ;  typedef CHAR_ARRY2* PCHAR_ARRY2 ;PCHAR_ARRY2 p_array= &array;  

十进制绝对地址 指向元素 指向一维数组 指向一维数组 指向一维数组 指向二维数组 十六进制地址
872369208 array[0] &array[0] array p_array[0] p_array 33FF4C38
872369209 array[0]+1         33FF4C39
….               
872370208   &array[0]+1 array+1 p_array[0]+1   33FF5020
           
872372208         p_array+1 33FF57F0

array ==&array[0]

 

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,086
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,561
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,410
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,183
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,820
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,903