Sian 发表于 2014-3-5 16:19:13

数符数组类型字符串与指针类型字符串的区别

/*
通过两种方式定义相同的字符串,比较两者的区别
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]
查看完整版本: 数符数组类型字符串与指针类型字符串的区别