首页 > 编程笔记 > C语言笔记 阅读:2048

C语言定义字符串的2种方法(附带示例)

通义灵码

在C语言中,字符串是一种特殊的字符数组,以空字符'\0'结尾。C语言提供了两种主要的方式来定义字符串:使用字符数组和使用字符指针。让我们深入了解这两种方法,并简单对比它们的区别。

1. 使用字符数组定义字符串

字符数组是定义字符串最直接的方式。我们可以通过声明一个字符数组并为其赋值来创建字符串。这种方法为字符串分配了固定大小的内存空间。

定义字符数组的一般语法如下:

char 数组名[数组大小];

需要注意的是,数组大小应该至少比字符串长度大 1,以容纳结尾的空字符。

以下是使用字符数组定义字符串的几种方式:

  1. // 方式 1:声明并初始化
  2. char str1[] = "Hello, World!";
  3.  
  4. // 方式 2:先声明,后赋值
  5. char str2[20];
  6. strcpy(str2, "Hello, World!");
  7.  
  8. // 方式 3:逐个字符初始化
  9. char str3[] = {'H', 'e', 'l', 'l', 'o', '\0'};
  10.  
  11. // 方式 4:声明指定大小的数组并初始化
  12. char str4[20] = "Hello, World!";

需要注意的是,当我们使用字符数组定义字符串时,编译器会自动在字符串末尾添加空字符 '\0'。例如,在方式 1 中,虽然我们只写了 13 个字符,但实际上数组的大小是 14,因为编译器自动添加了结束符。


在方式 2 中,我们使用 strcpy() 函数来为已声明的字符数组赋值,这是因为 C 语言不允许直接用赋值运算符=给数组赋值。


方式 3 展示了如何逐个字符初始化字符串。在这种情况下,我们需要手动添加结束符 '\0'。
 

方式 4 演示了如何声明一个指定大小的字符数组并初始化。这种方法允许我们为字符串预留额外的空间,以便日后可能的修改操作。

2. 使用字符指针定义字符串

使用字符指针定义字符串是另一种常见的方法,这种方法实际上是创建一个指向字符串字面量的指针。字符串字面量通常存储在程序的只读数据段中,这意味着我们不能直接修改它的内容。


定义字符指针的一般语法如下:

char *指针名 = "字符串内容";

以下是使用字符指针定义字符串的几种方式:

  1. // 方式 1:声明并初始化
  2. char *str1 = "Hello, World!";
  3.  
  4. // 方式 2:先声明,后赋值
  5. char *str2;
  6. str2 = "Hello, World!";
  7.  
  8. // 方式 3:使用 const 关键字(推荐)
  9. const char *str3 = "Hello, World!";

使用字符指针定义字符串时,指针变量存储的是该字符串的起始地址;也就是说,指针指向了字符串。
 

方式 3 中使用 const 关键字明确表示该字符串是只读的,这是一种良好的编程习惯,可以防止意外修改字符串内容。

两种定义方式的区别

简单对比字符数组和字符指针定义字符串的区别:


最后,让我们通过一个综合示例来演示这两种定义字符串的方法及其用法:

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main() {
  5. // 使用字符数组定义字符串
  6. char fruit[10] = "Apple";
  7. printf("Original fruit: %s\n", fruit);
  8.  
  9. // 修改字符数组中的字符串
  10. strcpy(fruit, "Banana");
  11. printf("Modified fruit: %s\n", fruit);
  12.  
  13. // 使用字符指针定义字符串
  14. char *color = "Red";
  15. printf("Original color: %s\n", color);
  16.  
  17. // 改变指针指向的字符串
  18. color = "Blue";
  19. printf("New color: %s\n", color);
  20.  
  21. return 0;
  22. }

输出结果:

Original fruit: Apple
Modified fruit: Banana
Original color: Red
New color: Blue

这个示例展示了字符数组和字符指针定义字符串的不同用法。我们可以直接修改字符数组 fruit 的内容,而对于字符指针 color,我们只能改变它指向的字符串,而不能修改字符串本身的内容。这个例子很好地说明了两种方法的特点和使用场景。

相关文章