• 5.二级指针


     一.二级指针的输入模型

    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    
    #pragma warning(disable:4996)
    
    
    int printArray(char **pArray, int num)
    {
        if (pArray == NULL)
        {
            return -1;
        }
        int i = 0;
        for (i = 0; i < num;i++)
        {
            printf("myArray[%d] = %s
    ", i, pArray[i]);
        }
        return 0;
    }
    
    
    void main() {
    
    
        int i = 0, j = 0;
        char *temp = NULL;
        char * myArray[] = {"aaaaa","bbbbb","ccccc","1111111111"};
    
        printf("打印前......
    ");
    
        /*for (i = 0; i < 4; i++)
        {
            printf("myArray[%d] = %s
    ",i,myArray[i]);
        }*/
        
        printArray(myArray,4);
    
    
        for (i = 0; i < 4; i++)
        {
            for (j = i + 1; j < 4; j++)
            {
                if (strcmp(myArray[i], myArray[j]) > 0)
                {
                    temp = myArray[i];
                    myArray[i] = myArray[j];
                    myArray[j] = temp;
                }
            }
        }
    
    
        printf("打印后......
    ");
    
        /*for (i = 0; i < 4; i++)
        {
            printf("myArray[%d] = %s
    ", i, myArray[i]);
        }*/
        printArray(myArray, 4);
    
        
        system("pause");
    
    }

    打印结果:

    二.一级指针的技术推演

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #pragma warning(disable:4996)
    
    
    int getLen(int *p)
    {
        *p = 40;
    }
    
    void main()
    {
        int a = 0;
        int *p = NULL;
    
        // 直接修改a的值
        a = 10;
        printf("a:%d
    ",a);
    
        p = &a;
        *p = 20;
        printf("a:%d
    ",a);
    
        getLen(p);
        printf("a:%d
    ",a);
    
        system("pause");
    }

    输出:

    三.二级指针的技术推演

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #pragma warning(disable:4996)
    
    
    int getMem3(char **p)
    {
        *p = 200;
        *p = (char *)malloc(1000); // *p 指向的是一个新分配的内存块的地址
        return 0;
    }
    
    void main()
    {
        char *p = NULL;
        
        // 不断给指针变量赋值,相当于不断的修改指针的指向
        p = 0x1;
        p = 2;
        p = 3;
    
        getMem3(&p);
        printf("p:%d
    ",p);
    
        system("pause");
    }
  • 相关阅读:
    java面试题
    linux下的文件目录结构
    Linux的基础命令
    Linux系统的介绍
    逻辑思维题
    37-字符的全排列
    36-螺旋矩阵
    35-面试:如何找出字符串的字典序全排列的第N种
    34-数细线
    33-求极差
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/6835112.html
Copyright © 2020-2023  润新知