zoukankan      html  css  js  c++  java
  • 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是怎么区分的,这就是为什么指针变量需要有类型。

  • 相关阅读:
    oracle 大文本由clob来存
    merge into 语法缺陷
    基本元素的增加 jquery
    报表 jquery
    购物车的高级实现 逻辑结构清晰
    购物车的实现 js
    定时器的制作与清除
    div的大小设置
    二级菜单联动(自定义框架)
    编写数组删除模板
  • 原文地址:https://www.cnblogs.com/firstForEver/p/6991964.html
Copyright © 2011-2022 走看看