字符,字符数组,字符指针

本文详细解析了C语言中字符串变量、常量、指针的区别与使用方法,包括如何访问与修改字符串数据,以及如何正确处理字符指针与字符串常量之间的交互。文章深入探讨了C语言在字符串操作上的独特特性,旨在帮助开发者更好地理解和应用这些基础知识。

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

一、字符串变量与常量

例:char a[]="abcdefg";
这一段语句中,既有字符串变量,也有字符串常量。
变量是数组a,常量是代码中的字面量字符串(abcdefg)。
此时,可以访问或修改a中任意一个元素;
但是,常量字符串只能访问,不能修改。(这句留着下面有用)

二、字符指针与字符串常量

例:char *p="abcdefg";
这个语句中,出现字符串常量,与一个指针变量。
注意,此时虽可以p【i】的方式访问字符,但却与上例有本质不同
此时,字符串作为常量存在于程序的静态存储区中,只能访问,不能修改
而p作为变量,位于程序的数据栈中,可以访问和修改。
但是!!!p此时指向的位置是静态存储区中的常量,因此不能使用p【i】='a'的方式改变字符串的值

三、字符指针与字符串变量

例:char a[MAX]; char*p=a;
这个就比较容易理解了字符指针指向一个字符数组,数组中存放的是变量。
因此可以访问和修改

四、字符指针和字符常量

这个其实没什么好说的,但是很好玩
p指针的赋值,一般都是p=&ch;
但是如果写出这样的代码p='a';
一般编译器是不会报错的,虽然会有一个警告。

这是因为C语言是一种很没有节操的而且会自动转换类型的语言。
当执行代码p='a'时,其实是将一个地址(0x61)赋值给了p,编译是能通过,但是赋值后如果再去访问p,很可能会出现越界错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值