NDK C语言 字符串两种形式

字符串两种形式

#include <stdio.h>

// 字符串两种形式
int main() {
    // char strings[] = {'j', 'i', 'n'}; printf打印字符串要给字符串添加'\0'结尾
    char strings[] = {'j', 'i', 'n', '\0'};
    // strings[2] = 'm';
    printf("strings = %s\n", strings);

    char *strArray = "jin";
    // strArray[2] = 'm';
    printf("strArray = %s\n", strArray);
    return 0;
}

字符串的创建过程:

  1. 使用:char strings[] = {'j', 'i', 'n', '\0'};创建字符串,

main函数进栈,执行char strings[] = {'j', 'i', 'n', '\0'}时,会先在静态区域开辟空间存储字符串“jin”,

然后将字符串“jin”拷贝到栈空间,并赋值给字符串函数strings;相当于栈空间和静态区域各存一份字符串“jin”。

  1. 使用:char *strArray = "jin";创建字符串,

main函数进栈,执行char *strArray = "jin"时,也会在静态区域开辟空间存储字符串“jin”,然后将字符串“jin”的内存地址赋值给栈空间的字符串函数strArray;相当于栈空间存的是字符串“jin”的内存地址,静态区域各存的是字符串“jin”。

字符串两种形式的内容修改

#include <stdio.h>

// 字符串两种形式
int main() {
    // char strings[] = {'j', 'i', 'n'}; printf打印字符串要给字符串添加'\0'结尾
    char strings[] = {'j', 'i', 'n', '\0'};
    strings[2] = 'm';
    printf("strings = %s\n", strings);

    char *strArray = "jin";
    strArray[2] = 'm';
    printf("strArray = %s\n", strArray);
    return 0;
}

使用:char strings[] = {'j', 'i', 'n', '\0'}创建字符串,修改成功;而使用:char *strArray = "jin"创建字符串,修改崩溃;是因为strings[2] = 'm';修改的是栈空间存储的字符串“jin”,栈空间操作修改是允许的;strArray[2] = 'm';修改的是栈空间指向的静态区域存储的字符串“jin”,静态区域拒绝访问,不允许修改静态区域的字符串,所以出现崩溃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sziitjin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值