问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

C语言怎么用指针代替二维数组66

提问网友 发布时间:2024-03-07 10:16
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
5个回答
热心网友 回答时间:2024-03-29 11:08

1.设p是指向二维数组a[m][n]的指针变量,则有:

int* p=a[0];//此时P是指向一维数组的指针。P++后,p指向 a[0][1]。

2.如果定义int (*p1)[n];p1=a;p1++后,p1指向a[1][0];  

则p+j将指向a[0]数组中的元素a[0][j]。

由于a[0]、a[1]┅a[M-1]等各个行数组依次连续存储,则对于a数组中的任一元素a[i][j],指针的一般形式如下:

p+i*N+j, 相应的如果用p1来表示,则为*(p1+i)+j。

元素a[i][j]相应的指针表示为:

*( p+i*N+j) ,相应的如果用p1来表示,则为*(*(p1+i)+j)。

同样,a[i][j]也可使用指针下标法表示,如p[i*N+j]。

若有:

int *p=a[0];

则数组a的元素a[1][2]对应的指针为:p+1*4+2

元素a[1][2]也就可以表示为:*( p+1*4+2)

用下标表示法,a[1][2]表示为:p[1*4+2]

扩展资料:

指针与数组的关系:

1.指针数组:就是一个由指针组成的数组,那个数组的各个元素都是指针,指向某个内存地址。 char *p[10];  //p是一个指针数组

2.数组指针:数组名本身就是一个指针,指向数组的首地址。注意这是一个常数。

example:

char (*p)[10];  //p是一个数组指针

3.函数指针:本身是一个指针,指向一个函数入口地址,通过该指针可调用其指向的函数,使用函数指针可实现回调函数。

参考资料:

百度百科-指针

热心网友 回答时间:2024-03-29 11:08
#include<stdio.h>
void main()
{
int i,j;
int a[3][3],*p=a[0];//相对于一维数组是一样的,a[0]本身就是一个一维数组,不要写成*p=a,写成*p=&a[0][0]也可以
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("%d\n",*(p+5));//调用就直接加数字,该数字是<3*3的就行
}
热心网友 回答时间:2024-03-29 11:13
#include<stdlib>
#include<stdio>
void main()
{
int a[10][10];
int *p=&a[0][0];
for(int i=0;i<10*10;i++)
printf("%d",*p);
}
热心网友 回答时间:2024-03-29 11:11
设二维数组为typename a[M][N],则指向该数组的指针为typename (*p)[N] = a;这样就可以用p来代替二维数组了。
热心网友 回答时间:2024-03-29 11:11
看你具体的应用,提供几个方法供参考:
1、一级指针
例:
int a[M][N];
int *p = &a[0][0];
相当于将二维数组当一维数组用,需要自己根据N的大小计算下标,使用却很灵活
2、指针数组
例:
int a[M][N];
int *p[M];
for(int i=0; i<M; i++)
{
p[i] = a[i];

}
之后用法可以跟二维数组一样,缺点在于M是固定的
3、指向数组的指针
例:
int a[M][N];
int (*p)[N];
p = a;
用起来跟二维数组没区别,缺点在于N是固定的
4、二级指针
例:
int a[M][N];
int **p;
p = (int *)malloc(sizeof(int *)*M);
for(int i=0; i<M; i++)
{
p[i] = a[i];

}
之后的用法可以跟二维数组一样,缺点在于用法比较麻烦,需要维护动态内存

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

C语言的指针表示动态二维数组怎么弄?2 C语言如何定义指针指向字符型二维数组22 C语言 怎么用指针输出一个二维数组的全部值33 ...以后在考职称的问题,是考中医师呢还是考主治医师? c语言中怎样实现对二维数组元素进行赋值并输出。179 儿媳不孝顺婆婆会影响到婆婆财产吗? 儿媳能继承公婆遗产吗比例是多少 丧偶儿媳没有赡养公婆有继承权吗 国家规定电信塔要离居民房多少米才安全129 国家规定移动基站铁塔安全距离是多少59 用护照去了一次香港,可以再去别的国家吗?4 请问持护照可以去香港吗?212 我有港澳通行证,但是没有香港的签注,持护照假飞第三国而在香港...2 砖砌体的质量要求包括什么? 草铵膦稀释倍数7 增强草甘膦的溶解度1 赌博案是刑事案件吗 帮我写一些句子, 例“海浪激起浪花,美丽极了” “海浪激起的...15 奶奶在田里割草的动作描写20 材料不同的塑料薄膜用什么方法焊接最好? c语言里面怎么用指针表示二维字符数组8 C语言如何利用指针接受二维数组实参1 异地能不能在福建省福清市农村申请建房,怎么申请,需什么手续 c语言中二维数组的指针如何表示27 c语言里面怎么用指针表示二维字符数组5 C语言 怎么用指针输出一个二维数组的全部值52 c语言问题,用指针为一个二维数组赋值20 管理学作业啊,急! 案例二 东原公司的组织问题 东原公司是一家新兴企业... 交强险过期电子眼会报警吗?13 车险脱保后电子眼会不会拍?还有12123上车辆会不会显示异常...8 车辆脱审高速电子警察能否报警4 白云观能让师傅开光吗 车辆脱审了摄像头能拍到吗4 脱审车摄像头还能拍到吗 ...需要买公交票了,两个人的话在北京怎么买公交票比较方便 车保脱险几天开车出了一趟门,电子眼会拍吗?5 现在的电子眼能通过车牌判断车辆是否脱保?5 强制险脱保定陶电子眼能拍到吗? 脱保车辆摄像头每次都会被拍吗2 被电子眼拍了,可不可以过一段时间再去处理?38
Top