黑马程序员技术交流社区

标题: 针对字符和字符串是否可以修改. 详解,附代码 [打印本页]

作者: 叶子哥    时间: 2016-4-24 08:42
标题: 针对字符和字符串是否可以修改. 详解,附代码
  1. //  1.对字符变量可以直接重新赋值进行修改.
  2.     char ch1 = 'b';
  3.     printf("ch1的地址是: %p\n",&ch1);
  4.     ch1 = 'T';
  5.     printf("ch1 = %c\n",ch1);
  6.     printf("ch1的地址是: %p\n",&ch1);
  7.    
  8.     //  2.ch2[4] = {'a','b','c','d'};对这样赋值的字符数组可以直接重新赋值进行修改
  9.     char ch2[4] = {'a','b','c','d'};
  10.     printf("ch2[1]  address:%p\n",&ch2[1]);
  11.     printf("ch2[2]  address:%p\n",&ch2[2]);
  12.     ch2[1] = 'g',ch2[2] = 'h';
  13.     for (int i=0; i<4; i++) {
  14.         printf("%c\t",ch2[i]);
  15.     }
  16.     printf("\n");
  17.     printf("ch2[1]  address:%p\n",&ch2[1]);
  18.     printf("ch2[2]  address:%p\n",&ch2[2]);
  19.    
  20.     //  3.ch3[4] = "abcd";对这样赋值的字符数组可以直接重新赋值进行修改
  21.     char ch3[4] = "abcd";
  22.     printf("ch3[1]  address:%p\n",&ch3[1]);
  23.     printf("ch3[2]  address:%p\n",&ch3[2]);
  24.     ch3[1] = 'g',ch3[2] = 'h';
  25.     for (int i=0; i<4; i++) {
  26.         printf("%c\t",ch3[i]);
  27.     }
  28.     printf("\n");
  29.     printf("ch3[1]  address:%p\n",&ch3[1]);
  30.     printf("ch3[2]  address:%p\n",&ch3[2]);
  31.    
  32.     //  4.*ch4 = "abcd";对这样赋值的字符指针不可以重新赋值进行修改,运行时会报错.此时"abcd"存储在数据区中,为字符串常量,不可对其修改.
  33.     char *ch4 = "abcd";
  34.     printf("ch4[1]  address:%p\n",&ch4[1]);
  35.     printf("ch4[2]  address:%p\n",&ch4[2]);
  36.     ch4[1] = 'g',ch4[2] = 'h';
  37.     for (int i=0; i<4; i++) {
  38.         printf("%c\t",ch4[i]);
  39.     }
  40.     printf("\n");
  41.     printf("ch4[1]  address:%p\n",&ch4[1]);
  42.     printf("ch4[2]  address:%p\n",&ch4[2]);
  43.    
  44.     //  5.char *ch5 = &chr;对单个字符指针,可以对其进行修改.此时ch5指针指向的是栈区的一块内存
  45.     char chr = 'b';
  46.     char *ch5 = &chr;
  47.     printf("ch5 :%c\n",*ch5);
  48.     printf("ch5  address:%p\n",ch5);
  49.     *ch5 = 'h';
  50.     printf("ch5 new:%c\n",*ch5);
  51.     printf("ch5 new address:%p\n",ch5);
  52.    
复制代码







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2