字符数组与字符指针的区别与应用 | C语言

字符数组:

char job = "teacher";

字符指针

char *job = "teacher";

解析:上面两个声明中的job都可以用作字符串。任何期望传递字符数组与字符指针的函数都能够接受这两种声明的job作为参数。但是这两种job不能互换,两者也有很大的差异:

区别

  • 在声明为数组时,就像任意数组元素一样,可以修改存储在job中的字符。在声明为指针时,job指向字符串字面量,而字符串字面量是不可以修改的。
  • 在声明为数组时,job是数组名。在声明为指针时,job是指针变量,这个变量可以在程序执行期间指向其他字符串。
  • 如果需要修改字符串,那么就要建立字符数组来存储字符串,声明为指针变量是不够的。

应用
下面的声明使编译器为指针变量分配了足够的内存空间

char *p;

但是它不能为字符串分配空间,因为我们没有指明字符串的长度。在使用p作为字符串之前,必须把p指向字符数组。例如以下的一种可能是把p指向已经存在的字符串变量:

char str[STR_LEN+1], *p;

p = str;

现在p指向了str的第一个字符,所以可以把p作为字符串使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值