C++之指针与数组区别
C++/C程序中,数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。 下面以字符串为例比较指针与数组的特性。 一、修改内容 1 char a[] = “hello”; //“hello”位于常量存储区,a在全局(静态)初始化区 2 a[0] = ‘X’; 3 cout << a << endl; 4 char *p = “world”; // 注意p指向常量字符串 p位于全局(静态)初始化区 5 p[0] = ‘X’; // 编译器不能发现该错误 常量字符串的内容是不能被修改的 6 cout << p << endl; 二、内容复制与比较 1 // 数组… 2 char a[] = "hello"; //a在全局(静态)初始化存储区 “hello”在常量存储区 3 char b[10]; //b在全局(静态)未初始化存储区 4 strcpy(b, a); // 不能用 b = a; 5 if(strcmp(b, a) == 0) // 不能用 if (b == a) 6 … 7 // 指针… 8 int len = strlen(a); 9 char *p =