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

c++中:

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

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

二者异同:

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

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

(iii)cout<< ptr<

cout<<*ptr<

cout<

cout<<*arry<

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

void print(const int *);

void print(const int [ ]);

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

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

(v)分配内存空间不同

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

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

你可能感兴趣的:(字符数组和字符指针的区别)