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是怎么区分的,这就是为什么指针变量需要有类型。

  • 相关阅读:
    要开学了,暂时停更
    day13 IP包头分析 | 路由器原理 1
    day12 数据链路层 | 交换机基本命令
    day11 OSI与TCP-IP 5层协议 | 物理层相关知识
    day10 扫描与爆破
    day 09 简单渗透测试
    day07 PKI
    day07 域
    day06 WEB服务器 | FTP服务器
    day05 DHCP部署与安全 | DNS部署与安全
  • 原文地址:https://www.cnblogs.com/firstForEver/p/6991964.html
Copyright © 2011-2022 走看看