可以用字符指针表示字符串,也可以用字符数组表示,但是本质上是不一样的
1:用字符指针表示字符串: const char *str = "I love China!"; (可以没有这个const,不过有的编译器会出现警告),反正是不能修改
2:用字符数组表示字符串,char str[] = "You are a student!";
初始化指针所创建的字符串常量被定义为只读,如果出现试图用指针修改这个字符串的行为,编译器会出现警告,说常量怎么着……
用字符数组定义字符串得到的字符数组倒是可以修改
在主函数中用这两种定义方法定义的字符串作为参数传进子函数中的时候,不管你是否修改字符串,参数可以是char str[], 也可以是char *s
(ps:传进来的参数是const类型的时候子函数要对应的加上),因为它能否修改这个性质在主函数中定义的时候已经明确了,也就是说能否修改不看子函数传参的时候用的字符指针还是字符数组,要看主函数中传进来的参数定义的时候是用的字符数组还是字符指针
代码1:
#include <stdio.h> void copyString(const char *from, char *to); int main() { const char *str1 = "I love China!"; char b[] = "You are a student!"; printf("string_a = %s string_b = %s ", str1, b); copyString(str1, b); printf("string_a = %s string_b = %s ", str1, b); return 0; } void copyString(const char from[], char to[]) { for (; *from != '