• C基础--二重指针和数组指针


    #include <stdio.h>
    
    int main1(void)
    {
        int a = 3;
        int b = 8;
        int *p = &a;  // int*  p = &a;  
        int **q;        // int**  q;
        q = &p;
        **q = 10;
        *q =  &b;
        **q = 5;
        p = &b;
        *p = 9;
    
        printf("a = %d	b = %d
    ", a, b);
    
        return 0;
    }
    
    //void fun(char *arr[], int n)
    void fun(char **arr, int n)        //二重指针传参时等价于指针数组
    {
        int i;
        for (i = 0; i < n; i++)
            printf("%s
    ", arr[i]);
            //printf("%s
    ", *(arr+i));        //当成二重指针去索引元素
    }
    int main(void)
    {
        char *s[3] = {"hello", "world", "xwp"};
        fun(s, 3);
        return 0;
    }
    #include <stdio.h>
    
    int main1(void)
    {
        int a[10] = {1,2,3,4,5,6,7,8,9,0};
        //int *p;
        int (*p)[10];    //先算小括号,p和*结合,属于指针类型,指针指向拥有10个int型元素的数组
        //p = a;        int *p; p = a;            a + 1
        p = &a;            //int (*p)[10] = &a;   &a + 1        p+1  加过40个字节
    
        printf("%d	%d
    ", sizeof(p), sizeof(*p));
        printf("%d
    ", (*p)[3]);
        
    
        return 0;
    }
    
    int main2(void)
    {
        /*
        char str[3][20] = {"hello", "world", "itcast"};
        char (*p)[20];
    
        p = &str[0];
        printf("%s
    ", *(p+1));
        */
    /*
        char str[3][20] = {"hello", "world", "itcast"};
        char *p;
    
        p = str[0];
        //printf("%s
    ", p);
        printf("%s
    ", (p+20));
        */
        char str[3][20] = {"hello", "world", "itcast"};
        char (*p)[20];
        p = str;
        printf("%s
    ", *(p+1));
        return 0;
    }
    //void fun(char a[][20], int n)    //数组指针传参时等价于二维数组
    void fun(char (*a)[20], int n)
    {
        int i;
        for (i = 0; i < n; i++)
            scanf("%s", a[i]);
        return;
    }
    int main(void)
    {
        int i;
        char s[3][20];
        fun(s, 3);
        for (i = 0; i < 3; i++)
            printf("%s
    ", s[i]);
    
        return 0;
    }
  • 相关阅读:
    屏蔽docker镜像暴露的端口
    runtime/cgo: pthread_create failed: Resource temporarily unavailable
    用户状态bash-4.2$
    Datasnap 和mORMOT 性能对比!
    Delphi XE 时间和时间戳互转换
    Delphi XE 10.4.2 IDE 设置----【代码格式化】
    DELPHI XE 数据集合并(TFDLocalSQL)
    CXGRID 常用功能设置
    MSSQL行转列
    delphi xe 获取字符串长度(不足补位)
  • 原文地址:https://www.cnblogs.com/zhuyaguang/p/4831181.html
Copyright © 2020-2023  润新知