数组与指针的区别

来源:互联网 发布:西部数码备案域名购买 编辑:程序博客网 时间:2024/05/21 11:28

数组在静态存储区被创建(如全局数组),或者在栈上被创建。

指针可以随时指向任意类型的内存块。

 

一、修改内容上的区别:

程序如下:

#include<iostream>using namespace std;int main(){char hua[]="huahua";char *p="lululu";hua[0]='k';p[0]='k';cout<<hua<<endl<<p<<endl;cout<<endl;return 0;}


编译无错误,运行出错。p是指向常量的字符串,不能修改。

 

二、sizeof()的区别:

#include<iostream>using namespace std;void fun(char hua[]){cout<<sizeof(hua)<<endl;}int main(){char hua[]="huahua";char *p="lululu";cout<<sizeof(hua)<<endl<<sizeof(p)<<endl;fun(hua);return 0;}



程序运行结果: 7   4   4                        单位:字节

sizeof(p)得到的是指针变量的字节数,不是p所指的内存的容量。 当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

原创粉丝点击