• C语言中数组变量和指针变量


      指针变量为什么需要类型?

      数组变量和指针变量在使用sizeof时不同,sizeof(数组变量)是数组长度,sizeof(指针变量)是存储int的字节长度4或者8(64bit)。

      数组变量在参数传递中,变成指针变量,这样就不能获取数组长度了,导致发生退化。

      数组变量并没有被分配空间,只是在使用时,会被替换成数组第一个元素的地址。而指针变量会被分配空间。

       

      代码示例:

      

        char a[] = "xy";
        char *b = a;
    
        int c[] = {1,2,3,4};
        int *d = c;
    
        printf("a数组变量大小:%d
    ", sizeof(a));// a数组变量大小:3
        printf("b指针变量大小:%d
    ", sizeof(b));// b指针变量大小:8
    
    
        printf("b指针变量位置:%p
    ", b);// b指针变量位置:0x7fff5485298d
        printf("b+1指针变量位置:%p
    ", b+1);// b+1指针变量位置:0x7fff5485298e
    
        printf("d指针变量位置:%p
    ", d);// d指针变量位置:0x7fff54852990
        printf("d+1指针变量位置:%p
    ", d+1);// d+1指针变量位置:0x7fff54852994
    
        printf("%d
    ", *d);// 1
        printf("%c
    ", *b);// x

       b、b+1指针指向的位置,相差1,因为是char类型。

      d、d+1指针指向的位置,相差4,因为是int类型。

      相差1和4是怎么区分的,这就是为什么指针变量需要有类型。

  • 相关阅读:
    js 监听页面url锚点变化 window.onpopstate
    js 返回上一页并刷新页面
    table 会有默认的外边框,内部会有分割线
    javascript 中设置window.location.href跳转无效问题解决办法
    chrom控制台常用方法
    Acquire and Release Fences
    常用 git 命令
    vim版本更新
    vim bundle安装
    emacs 常用命令
  • 原文地址:https://www.cnblogs.com/firstForEver/p/6991964.html
Copyright © 2020-2023  润新知