Head First C学习之char cars[] = "JQK"和char *cards = "JQK";

char cars[] = "JQK";
char *cards = "JQK";

相同点
1、是字符串常量"JQK"都在常量区,是只读的。
2、都在栈上创建cards变量。
两者的区别:
1、声明数组变量cards时程序会在栈上创建一个住勾搭数组老保存"JQK"。并将字符串"JQK"复制到栈上。

Head First C学习之char cars[] =
字符串数组.jpg

2、 指针cards变量将会保存字符串常量 "JQK"的地址,因为常量 "JQK"是只读的,因此程序试图修改 指针cards的变量指向的字符串中的内容时就会失败。

Head First C学习之char cars[] =
字符串指针.jpg

3、通常会用 const去修饰这样的指针变量,一旦你试图修改用 const修饰郭的变量,编译器就会报错。

const char *cards = "JQK";

你可能感兴趣的:(Head First C学习之char cars[] = "JQK"和char *cards = "JQK";)