二级指针做输入的三种模型之一(指针数组)

#include<stdlib.h>
#include<string.h>
#include<stdio.h>
void PrintArray(char** array,int n) {
	int i;
	for (i = 0; i < n; i++) {
		printf("%s\n", *(array + i));

	}

}

void Sort(char* *Myarray, int num) {///数组作为函数参数时会退化为指针
	//像这个num,函数调用结束后是不会改变实参的值虽然,
	//但是在调用开始时是可以通过实参传递值过来在调用过程中进行辅助运算的
	int i;
	int j;
	char* tmp = NULL;
	//排序
	for (i = 0; i < num; i++) {
		for (j = i + 1; j < num; j++) {
			if (strcmp(Myarray[i], Myarray[j]) > 0) {
				tmp = Myarray[i];//交换的是数组元素,即一级指针
				Myarray[i] = Myarray[j];
				Myarray[j] = tmp;
			}
		}
	}
}
void mainz3() {
	char* MyArray[] = { "aaaaa","bbbbb","ccccc","111111" };
	//数组,数组中的每一个元素均为指针,是一个指针数组
	//char* *MyArray    (*MyArray)是char*型的,即数组的元素类型是一级指针
	//char** MyArray;   (MyArray)是char**型的,即是一个二级指针,其指向一个数组的首地址,该数组里的元素都是一级指针
	//char  **MyArray   *(*MyArray )是char型的,即数组元素里存放的一级指针其指向的内容是char型字符数据,也就是0级指针是char型的
	int i = 0;
	int j = 0;
	int num = 0;

	char* tmp = NULL;
	num = sizeof(MyArray) / sizeof(MyArray[0]);

	printf("排序前:\n");
	PrintArray(MyArray,num);
	
	Sort(MyArray, num);

	printf("排序后:\n");
	PrintArray(MyArray, num);
	system("pause");
}




void main() {
	char* MyArray[] = { "aaaaa","bbbbb","ccccc","111111" };//"aaaaa"是一个指针
	int i = 0;
	int j = 0;
	int num = 0;
	
	char* tmp = NULL;
	num = sizeof(MyArray) / sizeof(MyArray[0]);
	printf("num:%d\n", num);

	printf("排序前:\n");
	for (i = 0; i < num; i++) {
		
		printf("%s\n", *(MyArray + i));
		
	}

	//排序
	for (i = 0; i < num; i++) {
		for (j = i + 1; j < num; j++) {                 //从小到大进行选择排序
			if (strcmp(MyArray[i], MyArray[j]) > 0) {
				tmp = MyArray[i];   //交换的是一级指针的指向
				MyArray[i] = MyArray[j];
				MyArray[j] = tmp;
			}
		}
	}

	printf("排序后:\n");
	for (i = 0; i < num; i++) {
		
		printf("%s\n", MyArray[i]);
	}
	system("pause");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值