复习一下整型数组,字符数组,整型指针数组,字符指针数组,整型数组指针,字符数组指针

Posted dhu121

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复习一下整型数组,字符数组,整型指针数组,字符指针数组,整型数组指针,字符数组指针相关的知识,希望对你有一定的参考价值。

复习一下整型数组,字符数组,整型指针数组,字符指针数组,整型数组指针,字符数组指针

20:52:01 2019-12-31

整型数组 int a[10];
字符数组 char b[10];     

                                       _______________________
整型指针数组 int *p[10]; |__|__|__|__|__|__|__|__|__| 每个格子里存的是一个指针,每个指针都是int类型的,会指向一个int的值.

1 for(int i=0; i<10; i++)
2   p[i] = &a[i];    //把a中的每个元素的地址都放在了指针数组p里.
3 
4 for(int j=0; j<10; j++)
5   printf("%d ", *(p[i]));//把p中的地址转化为真实的内容,也就是使用*对地址取值.

 字符指针数组 char *c[10]; 和上面一样,每个指针都是char类型的,会指向一个char

 

下面这两个是等式.表示左右两边的值是相等的

a == &a[0]
*a[i] == a

 

重点说说数组指针

整型数组指针 int (*P)[10]; p是一个指针,这个指针指向一个有10个格子的数组.这个10个格子里存的都是int类型的东西

int a[10];
int (*p)[10];
p = a;
p = &a;

 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 int main() {
 5 
 6     int a[10] = {1,2,3,4,5,6,7,8,9,10};
 7     int (*p)[10];
 8     p = &a;        //这种写法才是正确 且没有错误的
 9     //p = a;  这种写法会给警告.虽然我们知道数组的名字也可以被用作数组的首地址.
10     int i = 0;
11     for(i=0; i<10; i++)
12         printf("%d ", p[0][i]);        //这里的p其实是指向一个二维数组的首地址,但是实际上指向的是一个一位数组,所以p[0][0]就是这个数组a的a[0]了.
13                                     //这里的p[0][i]就是遍历数组的第一行.
14     /*
15     上面的p = &a;这句话其实就是将p[0]指向了a[10]  所以p[0][i]只需要对i++即可操作a[i]了.
16     p[0]-> [p00][p01][p02][p03][p04][p05][p06][p07][p08][p09] 第1 行  
17     p[1]-> [p10][...][...][...][...][...][...][...][...][...] 第2 行
18     p[2]-> [p20][...][...][...][...][...][...][...][...][...] 第3 行
19     p[3]-> [p30][...][...][...][...][...][...][...][...][...] 第4 行
20     p[4]-> [p40][...][...][...][...][...][...][...][...][...] 第5 行
21     p[5]-> [p50][...][...][...][...][...][...][...][...][...] 第6 行
22     p[6]-> [p60][...][...][...][...][...][...][...][...][...] 第7 行
23     p[7]-> [p70][...][...][...][...][...][...][...][...][...] 第8 行
24     p[8]-> [p80][...][...][...][...][...][...][...][...][...] 第9 行
25     p[9]-> [p90][...][...][...][...][...][...][...][...][p99] 第10行
26     经过上面这个表,就能够知道这个数组指针p是一个怎样的指针了. 数组指针p竟然是一个二维指针.
27     */
28 
29     return 0;
30 }

 

 

字符数组指针 char (*c)[5];
这句话中只有c这个符号是我们自己写的,其他的符号C编译器都认识.
所以我们来品品c是什么应该怎么读.
c是一个指针,这个指针指向一个 长度为5 的里面存着 字符 的数组


按照这样的读法,那么int (*p)[10];也很好读了
p是一个指针,这个指针指向一个 长度为10 的里面存着 整型数字 的数组

以上是关于复习一下整型数组,字符数组,整型指针数组,字符指针数组,整型数组指针,字符数组指针的主要内容,如果未能解决你的问题,请参考以下文章

C语言 指针数组-字符指针数组&整型指针数组 char*s[3] int*a[5] 数组指针int(*p)[4]

C语言指针进阶第二站:指针数组!

C语言指针进阶第三站,数组指针!

史上最强C语言教程----指针(笔试题1)

C语言进阶笔记深入了解进阶指针

C语言进阶笔记深入了解进阶指针