使用指向指针的指针的方法对5个字符串排序并输出
注意:
在C语言中,二维字符数组的数组名实际上不是指向二级指针的,而是隐含地形成了一种特殊的"间接引用"或者说"偏移地址"。当你声明一个二维字符数组如char arr[3][4]时,虽然它的名字arr本身并不是直接指向另一个指针,但实际上它代表了数组首元素在内存中的起始地址。
具体程序:
c
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char str[5][30];
char* pstr[5];
int i;
for (i = 0; i < 5; i++)
{
pstr[i] = str[i];
scanf("%s", *(pstr + i));
}
void sort(char** pstr);
printf("------------\n");
sort(pstr);
for (i = 0; i < 5; i++)
{
printf("%s\n", *(pstr + i));
}
return 0;
}
void sort(char** pstr)
{
int i, j;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4 - i; j++)
{
if (strcmp(*(pstr + j), *(pstr + j + 1)) > 0)
{
char* temp = *(pstr + j);
*(pstr + j) = *(pstr + j + 1);
*(pstr + j + 1) = temp;
/*char temp[30];
strcpy(temp, *(pstr + j));
strcpy(*(pstr + j), *(pstr + j + 1));
strcpy(*(pstr + j + 1), temp);*/
}
}
}
}