数组在静态存储区被创建(如全局数组),或者在栈上被创建。
指针可以随时指向任意类型的内存块。
一、修改内容上的区别:
程序如下:
#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所指的内存的容量。 当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。