c语言指针变量中行指针和列指针是什么?要如何使用?

最好精简一些,不懂的不要过来回答。希望大佬赶紧出现!
召唤阵型:
┏━━━━━━━┓
┃ 千 !变 ┃
┃ 万 !化 ┃
┗━━━━━━━┛
最新回答
他年词笔隐

2024-06-30 00:47:21

对于一个二维数组:
int a[3][5];

a即是它的行指针,a+0表示第0行的地址,a+1表示第1行地址…
a[row]+col即列指针,列指针经过一次解引用就可以转化成二维数组中实际的值,列指针也是指向非常量的常量指针。
追问
具体要怎么使用呢
追答
1.输入三个字符串,按由小到大的顺序输出。
#include
#include
#define M 40
main()
{
char a1[3][M],b1[3][M];
char (*p)[M]; //p是指向一维数组的指针,对于二维数组来说是行指针(指向列的指针)
char (*temp)[M];
p=a1; //a1,b1都是行指针
temp=b1;
int i,j;
printf("put into your text:\n");
for(i=0;i0) //(p+i)是第i行的行指针;*(p+i)=p[i]是第i行第0列的列指针
{strcpy(*temp,*(p+i)); //其实完全可以省略temp这个指针,把temp用b1代替即可,虽然数组名b1不
strcpy(*(p+i),*(p+i+1)); 能赋值,但是strcpy是字符串覆盖(字符串赋值),不是对数组名b1
strcpy(*(p+i+1),*temp); 这个地址常量赋值。
}
}
for(i=0,p=a1;i<3;i++)
{
printf("%s ",p++);

}
printf("\n");
}
追问
可以有归纳性的总结吗?怎么解引用呢,列指针和行指针怎么区分呢?qwq
追答
定义搞清楚即可,使用上没有什么好归纳的,因为应用场景不同。
所有指针解引用都是 *p 即可
列指针和行指针区别:行指针其实是 TYPE **p;列指针就是 TYPE *p;看定义就很清楚了。