通过下标访问字符串的一点感想

本文探讨了C语言中字符数组与指向字符串常量的指针之间的区别,重点介绍了如何通过下标访问元素及对元素进行赋值操作的不同之处,并提供了一个简单的验证程序。

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

给定一个char * str指针和一个char srr[]字符数组:

char * str = "abcdefg";
char srr[] = "abcdefg";

str是指向字符串常量的指针,也就是char * str = “abcdefg”中的“abcdefg”是一个字符串常量,只能通过下标如str[1]来访问,不能对str[1]进行赋值操作;
srr是字符数组,可以通过下标如srr[1]访问字符数组中的第2个字符,也可以对srr[1]进行赋值。

验证程序:

#include <stdio.h>

int main()
{
    char * str = "abcdefg";
    char srr[] = "abcdefg";

    printf("str[1] = %c\tsrr[1] = %c\n", str[1], srr[1]);

    str[1] = 'z';   //赋值报错
    srr[1] = 'z';
    printf("str[1] = %c\tsrr[1] = %c\n", str[1], srr[1]);

    return 0;
}

在vs2015上单步调试到 str[1] = ‘z’;时报错,报错信息如下:
这里写图片描述

这是由于对字符串常量中的str[1]进行了赋值操作导致,将str[1] = ‘z’;注释掉再次运行:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值