zoukankan      html  css  js  c++  java
  • C语言里面关于数组的一个容易忽视的小细节

    ginobili@VM_44_28_sles10sp1:~/code> cat test3.cpp 

    #include <stdio.h>

    int main()
    {
    char a[5] = {0};
    char *pa = a;
    printf("a = %p, pa = %p, &a=%p, &pa=%p ", a, pa, &a, &pa);
    return 0;
    }
    ginobili@VM_44_28_sles10sp1:~/code> g++ test3.cpp
    ginobili@VM_44_28_sles10sp1:~/code> ./a.out
    a = 0xbfc1e73f, pa = 0xbfc1e73f, &a=0xbfc1e73f, &pa=0xbfc1e738

    原因是为什么呢?

    array和pointer的区别:

    1. T a[5];

       T* pa = a; //把数组a转换成指向数组第一个元素的地址

    2. a[2] == *(a+2); //把数组a转换成指向数组第一个元素的地址

    3. (T*)&a == (T*)a ; //数组的地址是 数组第一个元素的地址

  • 相关阅读:
    Rest
    docker-4
    Arrays.asList
    docker-3
    docker
    docker
    linux-ss
    jackson
    Java将图片的路径转为Base64,VUE前端显示
    java base64视频存到本地或服务器
  • 原文地址:https://www.cnblogs.com/Torstan/p/3993816.html
Copyright © 2011-2022 走看看