美文网首页
字符数组和字符指针的区别

字符数组和字符指针的区别

作者: 冰吉凌 | 来源:发表于2015-04-19 14:00 被阅读65次

    c++中:

    char arry[ ]="hello world";在栈上分配一个局部数组。

    char *ptr =“hello world”;在全局空间分配一个全局数组。

    二者异同:

    (i)“hello world!”都是占用13个字节(其中最后一个为空字符结束标志);

    (ii) ptr是一个char *类型的变量,占用4个字节;arry是一个char[13]类型的变量,占用13个字节;

    (iii)cout<< ptr<<endl; 输出hello world!

    cout<<*ptr<<endl;输出h;

    cout<<arry<<endl;输出hello world!

    cout<<*arry<<endl;输出h;

    (iv)数组形参,不能以值传递的方式传递数组,可以写成类似数组的形式

    void print(const int *);

    void print(const int [ ]);

    void print(const int [10]);//维度表示期待的元素个数,实际不一定;

    即:数组作为参数传递个函数时传递的是指针而不是数组,传递的是数组的首地址。

    (v)分配内存空间不同

    ptr是分配一个全局数组,全局数组是全局变量,对应内存中的全局区域,保存在普通数据段(静态存储区);

    arry是分配一个局部数组,局部数组是局部变量,对应的是内存中的栈。

    相关文章

      网友评论

          本文标题:字符数组和字符指针的区别

          本文链接:https://www.haomeiwen.com/subject/nbygxttx.html