C语言之字符串和指针

 

目录

用数组实现的字符串和用指针实现的字符串

█用数组实现的字符串str

█用指针实现的字符串ptr

注意

用数组和指针实现字符串的不同点

字符串数组

 用数组实现的字符串的数组——二维数组

用指针实现的字符串数组——指针数组

注意


字符串和指针有着紧密·的联系,下面我们就来学习字符串和指针的相似点和不同点。


用数组实现的字符串和用指针实现的字符串

下面我们来看用数组和指针实现的字符串

#include<stdio.h>

int main()
{
	char str[] = "ABC";
	char *ptr = "123";
	
	printf("str=\"%s\"\n", str);
	printf("ptr=\"%s\"\n", ptr);

	return 0;
}

让我们来结合两图来分析它们的异同:

█用数组实现的字符串str

str是char[4]类型的数组,各元素从开头开始依次用‘A’ 'B' 'C' '\0'进行初始化,char数组占据的内存空间和数组元素个数一致,可以通过sizeof(str)求得

█用指针实现的字符串ptr

ptr是指向char型变量的指针变量,它的初始值为字符串字面量“123”,对字符串字面量进行判定,可以得到指向该字符串字面量第一个字符的指针,所以ptr被初始化为指向保存在内存中的字符串字面量“123”的第一个字符‘1’的指针

另外一般情况下,我们把指针p指向字符串字面量“string”的首个字符‘s’,称为“指针p指向string”

需要注意的是指针ptr不可进行如下声明:

	char *ptr = {'1', '2', '3', '\0'};

数组用的{ }形式的初始值,不可以用于单一的变量

从上面的图可以看出,指针ptr和字符串字面量“123”都占用了空间,指针ptr占用的空间为sizeof(ptr),即sizeof(char*)字节,其长度因编译器而异。

请注意,用指针实现的字符串相比于数组需要更多的内存空间。

注意

指针p是指向字符串首个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

学海无涯.苦作舟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值