一站式编程里的题目:
定义以下变量:
char a[4][3][2] = {{{'a', 'b'}, {'c', 'd'}, {'e', 'f'}},
{{'g', 'h'}, {'i', 'j'}, {'k', 'l'}},
{{'m', 'n'}, {'o', 'p'}, {'q', 'r'}},
{{'s', 't'}, {'u', 'v'}, {'w', 'x'}}};
char (*pa)[2] = &a[1][0];
char (*ppa)[3][2] = &a[1];
要想通过pa
或ppa
访问数组a
中的'r'
元素,分别应该怎么写?
代码如下:
#include <stdio.h>
int main(void)
{
char a[4][3][2] = {{{'a', 'b'}, {'c', 'd'}, {'e', 'f'}},
{{'g', 'h'}, {'i', 'j'}, {'k', 'l'}},
{{'m', 'n'}, {'o', 'p'}, {'q', 'r'}},
{{'s', 't'}, {'u', 'v'}, {'w', 'x'}}};
char (*pa)[2] = &a[1][0];
char (*ppa)[3][2] = &a[1];
pa=pa+5;
ppa++;
printf("pa now is %c\n",pa[0][1]);
printf("ppa now is %c\n",ppa[0][2][1]);
return 0;
}
解释:
1.首先说
char (*pa)[2] = &a[1][0];
char (*pa)[2] 意思是 含有两个类型是char元素的数组的数组指针,&a[1][0]则代表 数组a中第二行第一组的首地址,赋值后pa将地址指向了 {'g','h'} 数组,那么如果要到{q,r}我们只要指针的地址指到{q,r}数组的首地址就可以了,将pa+5移动了指针指向的地址。
最后打印r
printf("pa now is %c\n",pa[0][1]);
pa[0][1] 表示访问这个数组中的第二个元素,也就是r
2.
char (*ppa)[3][2] = &a[1];
ppa代表含有一个二维数组的数组指针,目前指向了第二行
{{'g', 'h'}, {'i', 'j'}, {'k', 'l'}}
要想访问到必须再向下一行: ppa++
最后访问r
printf("ppa now is %c\n",ppa[0][2][1]);
其实也可以不用挪动指针而直接访问就可以,比如pa, pa[5][1]就是r, paa[1][2][1]也可以访问到r.
分享到:
相关推荐
此实例解释了new动态创建多维数组的用法,还有包涵了多维数组指针的用法···
在C语言中数组和指针之间存在一些千丝万缕的联系,搞不清楚的情况下非常容易出错,在前一段时间我写过关于数组和指针的分析,但是还是存在很多不清楚的问题,特别是当出现一些复杂的问题时,这种情况更加的复杂。...
在C++中,通过多维数据的指针作为函数参数传递源程序
C/C++的函数中传递多维数组的各种方法,包括数组和指针的各种用法.
本文给大家分享了C语言初学者入门讲座 第十二讲 多维数组的指针变量。
本书针对程序设计的初学者,以面向对象的程序设计思想为主线,以通俗易懂的...此外,本教材还介绍了一些常用数据结构基础知识,使得读者学习本书后,能够解决一些简单的实际问题。整套教材语言生动、流畅,深入浅出。
在C/C++开发中,多维数组是一个让很多人感到棘手的问题.原因是C/C++中,多维数组被看 作是数组的数组. 在向函数传递参数的时候,多维数组经常让人感到是麻烦的制造者,通常都是传递首地址 和每一维的大小: ...
C语言多维数组与多级指针[参照].pdf
如果要给二维数组(m*n)分配空间,代码可以写成下面: 代码如下:char **a, i; // 先分配m个指针单元,注意是指针单元 // 所以每个单元的大小是sizeof(char *) a = (char **) malloc(m * sizeof(char * )); // 再分配n...
C语言数组与指针操作
数组与指针 利用数组表示一组相关 数据项 声明数组、初始化数组、 应用数组中的单个元素 将数组传递给函数 声明和使用多维数组
多维数组与多级指针是初学者经常感觉迷糊的一个地方。超过二维的数组和超过二级的指针其实并不多用。但只要掌握一定的方法,理解多级指针和“多维”数组完全可以像理解一级指针和一维数组那样简单。
C语言中指针引用多维数组的教学实践.pdf
下面来讲讲多维数组与指针的关系。与普通数组一样,使用多维数组时,实际上将其自动转换为指向该数组第一个元素的指针
比较实用的一个C语言编程的练习,其中包含多种存住形式,以及一些... //数组名 int dim; //数组维数 int *lower; //各维下界表指针 int *upper; //各维上界表指针 int *Constants; //各维常量因子表指针 }Array;
掌握数组的使用 了解多维数组的使用 掌握指针的概念和使用 了解多级指针的概念
C C++ WINDOWS win32 指针
程序设计基础
在C语言中数组和指针之间存在一些千丝万缕的联系,搞不清楚的情况下非常容易出错,在前一段时间我写过关于数组和指针的分析,但是还是存在很多不清楚的问题,特别是当出现一些复杂的问题时,这种情况更加的复杂。...