• 用指向指针的指针的方法对n个整数排序并输出 要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出


    用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出。

    解题思路: 指向指针的指针其实就是二级指针,使用二级指针的保存一级指针的地址,让这个一级指针指向具体的数据空间。排序就是按照每个元素指针指向空间中的数据进行比对排序即可。

    答案:

    #include<stdio.h>
    #include<string.h>
    void sort(int *s[], int len)
    {
    	int i, j;
    	for (i = 0; i < len; i++) {
    		for (j = i; j < len; j++) {
                //s[i]就是s指针数组中第i个元素保存的一级指针,再次解引用就是最终的数据空间
    			if (*(s[i]) > *(s[j])) {
    				int tmp = *(s[i]); //指针的好处在于直接通过赋值可以改变指向
    				*(s[i]) = *(s[j]);  //只要交换了字符串的地址就实现了字符串的交换
    				*(s[j]) = tmp;//因此通过指针指向的交换就能够实现数组中字符串的排序
    			}
    		}
    	}
    }
    int main()
    {
    	int *integers;
    	int count = 0;
    	printf("Please enter the number of count: ");
    	scanf_s("%d", &count);
    	integers = (int*)malloc(count * sizeof(int));//为指针申请count个int空间用于存放输入的数据
    	int **p = (int **)malloc(count * sizeof(int*));//为指针申请count个int*空间用于存放int空间的首地址
    	printf("Please enter %d integers: 
    ", count);
    	for (int i = 0; i < count; i++) {
    		p[i] = integers + i; //将数组中每个int元素空间的首地址赋值给指针数组中的各个元素
    		scanf_s("%d", p[i]);//p[i]就保存时第i个数据的地址,因此这里不用取地址
    	}
    	sort(p, count);
    	for (int i = 0; i < count; i++) {
    		printf("%d ", integers[i]);
    	}
    	printf("
    ");
    	free(integers);
    	free(p);
    	system("pause");
    	return 0;
    }
    

    用指向指针的指针的方法对n个整数排序并输出 要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出

  • 相关阅读:
    你想了解数据库吗,进来瞧一瞧吧,详细的数据库解读
    MySQL8.0-INFORMATION_SCHEMA增强
    工作总结:涉及数据库、软件测试等内容
    MySQL高级-MySQL锁
    年轻就该多尝试,教你20小时Get一项新技能
    “TensorFlow 开发者出道计划”全攻略,玩转社区看这里!
    MySQL数据库高级操作(图文详解)
    JAVA RMI helloworld入门
    JAVA8 十大新特性详解
    Java 8 Lambda表达式探险
  • 原文地址:https://www.cnblogs.com/weiyidedaan/p/13293018.html
Copyright © 2020-2023  润新知