// 1.对字符变量可以直接重新赋值进行修改. char ch1 = 'b'; printf("ch1的地址是: %p\n",&ch1); ch1 = 'T'; printf("ch1 = %c\n",ch1); printf("ch1的地址是: %p\n",&ch1); // 2.ch2[4] = {'a','b','c','d'};对这样赋值的字符数组可以直接重新赋值进行修改 char ch2[4] = {'a','b','c','d'}; printf("ch2[1] address:%p\n",&ch2[1]); printf("ch2[2] address:%p\n",&ch2[2]); ch2[1] = 'g',ch2[2] = 'h'; for (int i=0; i<4; i++) { printf("%c\t",ch2[i]); } printf("\n"); printf("ch2[1] address:%p\n",&ch2[1]); printf("ch2[2] address:%p\n",&ch2[2]); // 3.ch3[4] = "abcd";对这样赋值的字符数组可以直接重新赋值进行修改 char ch3[4] = "abcd"; printf("ch3[1] address:%p\n",&ch3[1]); printf("ch3[2] address:%p\n",&ch3[2]); ch3[1] = 'g',ch3[2] = 'h'; for (int i=0; i<4; i++) { printf("%c\t",ch3[i]); } printf("\n"); printf("ch3[1] address:%p\n",&ch3[1]); printf("ch3[2] address:%p\n",&ch3[2]); // 4.*ch4 = "abcd";对这样赋值的字符指针不可以重新赋值进行修改,运行时会报错.此时"abcd"存储在数据区中,为字符串常量,不可对其修改. char *ch4 = "abcd"; printf("ch4[1] address:%p\n",&ch4[1]); printf("ch4[2] address:%p\n",&ch4[2]); ch4[1] = 'g',ch4[2] = 'h'; for (int i=0; i<4; i++) { printf("%c\t",ch4[i]); } printf("\n"); printf("ch4[1] address:%p\n",&ch4[1]); printf("ch4[2] address:%p\n",&ch4[2]); // 5.char *ch5 = &chr;对单个字符指针,可以对其进行修改.此时ch5指针指向的是栈区的一块内存 char chr = 'b'; char *ch5 = &chr; printf("ch5 :%c\n",*ch5); printf("ch5 address:%p\n",ch5); *ch5 = 'h'; printf("ch5 new:%c\n",*ch5); printf("ch5 new address:%p\n",ch5);