C语言声明字符串的两种方式

本文详细介绍了C语言中字符串的表示方法,包括使用数组和指针,并解释了它们在内存中的不同存储方式及如何避免修改常量区字符串导致的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c语言是没有字符串类型的,只有字符型 char

c 语言表示字符串只能用数组或者指针。

例如:

#include <stdio.h>

int main(){
    char a[] = {'a','b','c'};
    char *b = "123";

    for (int i = 0; i < 3; i++) {
        printf("%c\n",a[i]);
    }

    printf("%s\n",b);
    return 0 ;
}

打印结果就是

a
b
c
123

注意:这两种方法虽然都表示了字符串,但是内存里是截然不同的存储方式:

  • 数组是存在堆中的,可以更改
  • 字符串是存在常量区的,不能更改

如果我们强行更改字符串的值就会发生错误

Bus error: 10

系统就报错了

### C语言字符串声明和初始化 在C语言中,字符串通过字符数组实现。有两种主要的方式可以用来声明并初始化字符串。 #### 使用字符数组直接初始化 一种方法是在定义字符数组的同时提供一个初始值列表。这种方式下,可以通过列举各个字符来完成初始化: ```c char str1[] = {'H', 'e', 'l', 'l', 'o', '\0'}; ``` 这里`str1`被初始化为包含六个元素的数组,最后一个元素`\0`标志着字符串的终止[^1]。 #### 使用字符串字面量初始化 另一种更常见的做法是利用字符串常量来进行初始化。当采用这种方法时,编译器会自动加上结尾的空字符 `\0`: ```c char str2[] = "World"; ``` 上述代码片段中,虽然只提供了五个可见字符 `"World"` ,但实际上 `str2` 数组包含了六个成员,因为编译器会在最后追加一个不可见的 `\0` 来标记字符串结束位置。 另外需要注意的是,在某些情况下可能希望指定整个数组大小而不是让编译器自行决定,则可以在方括号内给出确切尺寸: ```c char str3[10] = "Example"; // 这里即使"Example"只有7个字母(含'\0'),也会预留9个额外的空间供后续操作使用。 ``` 对于静态分配或全局作用域内的字符数组而言,默认会被设置为空白(即全部填充为零),除非另有说明;而对于局部变量来说,如果不显式赋予初值的话,它们的内容将是未定义的[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值