[C基础知识]2015-09-22

    int a = 1;
    int *pa = &a;
    printf("a所占的内存大小:%lu\n",sizeof(a));
    printf("pa所占的内存大小:%lu\n",sizeof(pa));

    输出结果:a所占的内存大小:4
            pa所占的内存大小:8
            (在64位系统下,一个指针变量占据8个字节)

    输出a的两种方式:

    printf("a = %d\n",a);
    printf("a = %d\n",*pa); //这里*pa(右值)表示取值


    char c = 'c';
    char *pb = &c;
    printf("c所占的内存大小:%lu\n",sizeof(c));
    printf("pb所占的内存大小:%lu\n",sizeof(pb));

    输出结果:c所占的内存大小:1
            pb所占的内存大小:8
    int a = 1;
    int *pa = &a;
    int *paa = &a;

    *pa = 2; //这里*pa(左值)表示指针指向的那片地址空间
    printf("*pa = %d\n",*pa);
    printf("**pa = %d\n",*paa);

    输出结果:
        *pa = 2
        **pa = 2
    int a = 1;
    int *pa = &a;
    printf("a = %d\n",a);
    printf("所记录的值:%x\n",pa);
    printf("所记录的值:%x\n",pa+2);

    输出结果:
    a = 1
    所记录的值:5fbff82c
    所记录的值:5fbff834
    int a = 1;
    int *pa = &a;
    int **paa = &pa;
    printf("%d\n",**paa);
    printf("%lu\n",sizeof(paa));

    输出结果:
        1
        8
    // const的位置
    int b = 5;
    const int *pa = &b;
    b = 6; // 不可以通过指针改变b的值
    printf("%d\n",*pa);

    int *const pb = &b;
    *pb = 7;
    printf("%d\n",*pb);
    b = 4;
    printf("%d\n",b);
    int a = 3;
    int *pa = &a;
    printf("*pa = %d\n",*pa);
    void *pb = &a;
    int *pbb = (int *)pb; //(指针类型转换)
    printf("*pbb = %d\n",*pbb);
    //array 数组名存的是数组首个元素的首地址
    int array[3] = {1,2,3};
    printf("%x\n",array+1); //数组元素2的地址
    printf("%x\n",&array+1);
    //&array +1:一个单位的数据类型长度,此时是array[3],长度为12个字节 
     int array[3] = {1,2,3};
     printf("%x\n",array);
     printf("%x\n",&array);
     printf("%x\n",&array[0]);
     //输出结果:均为数组首个元素的首地址

    //打印数组元素1
    printf("--->%d\n",*array);
    printf("--->%d\n",array[0]);
    printf("--->%d\n",*(array+0));
    printf("--->%d\n",*(0+array));
    printf("--->%d\n",0[array]);

    //打印数组元素2
    printf("%d\n",array[1]);
    printf("%d\n",*(array+1));

    //重要的事再说一遍
    int array[10] = {0};
    printf("%d\n",array+1);
    printf("%d\n",&array+1);
    int array[3] = {111,222,333};
    char *pa = array;
    int *paa = (int *)pa; //(指针数据类型转换) 可将111换成150检验
    printf("%d\n",*paa);
    int array2[2][3] = {{1,2,3},{4,5,6}};
    int (*pa)[2] = &array2;

    int result = *(*(pa+0)+3);
    printf("result:%d\n",result);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值