zoukankan      html  css  js  c++  java
  • 数组名和指针的区别

    #include <iostream.h>
    #include <string.h>

    void fun(char str[6])//退化为指针
    {
    cout << sizeof(str) << endl;
    }

    void main(void)
    {
    char str[13]="Hello world!";
    char *pStr="Hello world!";
    cout<<sizeof(str)<<endl;
    cout<<sizeof(pStr)<<endl;
    cout<<strlen(str)<<endl;
    cout<<strlen(pStr)<<endl;

    char str2[] = "hello";
    cout << sizeof(str2) << endl;//注意字符串常量后面有隐含的’\0’,所以输出6

    fun(str2); //输出4,即一个指针所占的内存大小
    //指针的sizeof永远是4字节(32位系统)或8字节(64位系统),而不管指针是什么类型的,指针的类型只是决定了它指向的数据的类型。
    return;
    }

    输出

    13

    4

    12

    12

    注意:一定要记得数组名并不是真正意义上的指针,它的内涵要比指针丰富的多。但是当数组名当做参数传递给函数后,其失去原来的含义,变作普通的指针。另外要注意sizeof不是函数,只是操作符。

  • 相关阅读:
    BZOJ3573: [Hnoi2014]米特运输
    BZOJ3531: [Sdoi2014]旅行
    BZOJ3505: [Cqoi2014]数三角形
    BZOJ3309: DZY Loves Math
    BZOJ3260: 跳
    BZOJ3252: 攻略
    BZOJ3226: [Sdoi2008]校门外的区间
    BZOJ3155: Preprefix sum
    BZOJ2843: 极地旅行社
    BZOJ2671: Calc
  • 原文地址:https://www.cnblogs.com/zzj2/p/3013037.html
Copyright © 2011-2022 走看看