用数组实现的字符串和用指针实现的字符串。
1、
#include <stdio.h> int main(void) { char str[] = "abc"; //数组实现的字符串,str为数组名,为指向数组起始元素的指针,相当于“a”的指针。 char *ptr = "123"; //指针实现的字符串,ptr为指针,表示指向字符串字面量“123”首个字符的指针,即“1"的指针。 printf("str: %s ", str); printf("ptr: %s ", ptr); return 0; }
001、使用指针实现的字符串比使用数组实现的字符串占用更多的内存空间,因为指针创建的字符串除了字符串字面量占据内存空间外,指针也要占据内存空间。
002、数组名表示数组起始元素的指针,使用指针创建的字符串,指针变量也表示首个字符的指针,因此行为和数组本身一样,可以依据访问每一个字符。
2、用数组实现的字符串和用指针实现的字符串的不同点。
#include <stdio.h> int main(void) { char str[] = "abc"; //用数组实现的字符串 printf("str = %s ", str); str = "edf"; //此处编译错误,因为不能使用赋值运算符对数组进行修改,str为数组名。虽然str表示一个元素的指针,也不能修改。 printf("str = %s ", str); return 0; }
#include <stdio.h> int main(void) { char *ptr = "abc"; //用指针实现的字符串 printf("ptr = %s ", ptr); ptr = "def"; // 此处不会编译失败,说明使用指针实现的字符串,指针ptr可以修改为指向其他字符的指针。 printf("ptr = %s ", ptr); return 0; }
可以为指向字符串字面量(中的字符)的指针赋上指向别的字符串字面量(中的字符)的指针。 赋值后,指针指向新的字符串字面量(中的字符)。