2024-06-30 00:47:21
具体要怎么使用呢
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;看定义就很清楚了。