zoukankan      html  css  js  c++  java
  • 对于C语言中数组名是指针的理解

    我们都知道,c语言中数组名是一个指针,比如下面这段代码

    #include<iostream>
    using namespace std;
    int main()
    {
     int a[4]={1,2,3,4};
     for(int i=0;i<4;i++)
     {
      cout<<*(a+i);//*(a+i)和a[i]是等价的。
      cout<<endl;
     }
     return 0;
    }

    但是看下面这个代码

    #include<iostream>
    using namespace std;
    int main()
    {
     int a[4]={1,2,3,4};
     cout<<"数组长度"<<sizeof(a)<<endl;
     int *p;
     cout<<"整形指针的长度为:"<<sizeof(p)<<endl;
     p=a;
     cout<<"指向整形数组后指针的长度为:"<<sizeof(p)<<endl;
     return 0;
    }

    运行结果为:数组的长度为16

    整形指针的长度为:4

    指向整形数组后指针的长度为:4

    *********************************

    问题来了:既然数组名a是指针,为什么sizeof(a)和sizeof(p)得到的结果是不一样的呢?是不是说数组名不仅仅是指针呢?

    我是这样理解的,数组名就是指针,而且是个常指针,而sizeof一个长指针和一个同类型的指针变量得到的结果是不一样的。

  • 相关阅读:
    课程作业一
    关于代码中的抄袭(不针对任何人)
    第四次作业
    第三次寒假作业-随笔汇总
    第三次寒假作业-合作
    第三次寒假作业-个人
    第二次寒假作业汇总
    问题
    第二次寒假作业——自学安排
    第二次寒假作业
  • 原文地址:https://www.cnblogs.com/qingergege/p/4944869.html
Copyright © 2011-2022 走看看