【版权申明】转载请附上出处链接
const char* 、char* const、 char const * 三者的区别
#include <stdio.h>
int main(int argc, char **argv)
{
char string1[32] = "aaaa!";
char string2[32] = "AAAA!";
const char* ptr1 = string1; // ptr1是一个变量(可以被修改),但是ptr1指向的内容不可以被修改。
char* const ptr2 = string1; // ptr2是一个只读变量(不可以被修改),但是ptr2指向的内容可以被修改
char const *ptr3 = string1; // 同 ptr1
ptr1 = string2;
// ptr1[0] = '1'; error: assignment of read-only location ‘*ptr1’
printf("ptr1 = %s\n", ptr1);
// ptr2 = string2; error: assignment of read-only variable ‘ptr2’
ptr2[0] = '2';
printf("ptr2 = %s\n", ptr2);
ptr3 = string2;
// ptr3[0] = '3'; error: assignment of read-only location ‘*ptr3’
printf("ptr3 = %s\n", ptr3);
return 0;
}
结果:
ptr1 = AAAA!
ptr2 = 2aaa!
ptr3 = AAAA!