C/C++中数组与指针的区别

指针与数组可以替换使用,容易让人产生错觉二者是等价的,那么二者到底有什么区别呢?

数组:在静态存储区被创建或者在栈上被创建,数组名对应着一块内存(而不是指向),其地址与容量在生命期内保持不变,且数组的内容可以改变;

指针:可以随时指向任意类型的内存块,“可变”,所以指针更加灵活但也更加危险


数组:用标准库函数strcpy进行复制,而不能使用b=a直接复制这将产生编译错误

指针:可以直接p=q,即将q的地址直接赋给了p


数组:sizeof(a)得到数组的容量

指针:sizeof(*p)得到指针变量的字节数,而不是指针p所指向内存的容量

char a[] = "hello world";
char *p  = a;
cout<< sizeof(a) << endl;   // 12字节
cout<< sizeof(p) << endl;   // 4字节


你可能感兴趣的:(C++)