数符数组类型字符串与指针类型字符串的区别
/*通过两种方式定义相同的字符串,比较两者的区别
1、数组的方式定义字符串,字符串的值保存在栈区,与基本数据类型相似,即普通的字符数组,可修改;
2、指针的方式定义字符串,字符串的值保存在常量区,并且做为常量保存,为只读属性,并且如果再次定义相同内容的字符串,指针指向的是同一片空间;
3、指针方式定义的字符串,由于在常量区,因此不能够被修改!
*/
#include <stdio.h>
#include <stdlib.h>
int main() {
char c[] = "yusian";// 定义字符数组保存字符串"yusian";
char s[] = "yusian";// 定义另一个方便比较;
printf("%p\n%p\n", c, s);// 打印两个字符数组的地址,发现不一致;
c = 'S';// 修改字符串中的某个值;
int i;
for (i = 0; i < strlen(c); i++) {
printf("%c", c);//通过for循环输出字符串,值成功被修改;
}
printf("\n");
char *str = "yusian";// 定义字符串指针;
char *string = "yusian";// 定将另一个内容相同的字符中指针;
printf("%p\n%p\n", str, string);// 打印两个指针向指向的地址,结果相同;
//str = 'S';// 如果对上述的定义的字符串中的值进行修改,程序会崩溃;
printf("%s\n", str);
system ("pause");
return 0;
}
输出结果:
0022FF30
0022FF20
yuSian
00403000
00403000
yusian
请按任意键继续. . .
页:
[1]