C语言-使用指向指针的指针的方法对5个字符串排序并输出

使用指向指针的指针的方法对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);*/
			}
		}
	}
	
}

运行结果:

相关推荐
火山灿火山几秒前
Qt常用控件(五) - 多元素控件
开发语言·qt
熬了夜的程序员几秒前
【Rust学习之路】序
开发语言·后端·学习·rust
代码游侠2 分钟前
学习笔记——进程
linux·运维·笔记·学习·算法
say_fall4 分钟前
C语言编程实战:每日一题:用栈实现队列
c语言·开发语言
天赐学c语言5 分钟前
12.11 - 最长回文子串 && main函数是如何开始的
c++·算法·leetcode
deng-c-f6 分钟前
C/C++内置库函数(4):c++左右值及引用的概念、move/forward的使用
c语言·开发语言·c++
CoovallyAIHub6 分钟前
AI模型训练有哪些关键步骤与必备工具?从概念到可运行的智能模型
深度学习·算法·计算机视觉
程序员-King.9 分钟前
day122—二分查找—完成旅途的最少时间(LeetCode-2187)
算法·leetcode·二分查找·双指针
零雲9 分钟前
java面试:怎么保证消息队列当中的消息丢失、重复问题?
java·开发语言·面试
冬夜戏雪10 分钟前
【java学习日记】【12.11】【11/60】
java·开发语言