字符指针为什么输出的是地址_为什么C语言中的字符串可以用指针表示?

这篇博客探讨了C语言中指针的概念,特别是对于字符串变量名的指针表示。指针作为内存地址的别名,简化了对内存中变量的访问。文中通过实例解释了如何使用指针访问和操作变量,包括指针的加减运算。还提到了直接用指针声明字符串的情况,并指出指针必须指向已存在的变量。当需要动态分配内存时,使用`malloc`函数来创建新的存储空间。最后,强调了C语言的内存管理灵活性,对比了C与Python在这方面的能力差异。
摘要由CSDN通过智能技术生成

为什么很多人不爱学C语言那?因为C语言里有个概念叫指针,有时候一个指针还不够,还要来个双重指针,不熟悉的人不要说写代码了,看着就迷糊,而实际上指针不就是个地址嘛。

我们都知道程序在运行的时候变量是存储在内存中的,如何去访问这些数据那?就需要用到内存地址,内存地址是一个十六进制的数字,比如说0x403024这就可以表示一个变量,拿这个东西也可以访问变量,但是如果变量都长这个样子,那程序员可就惨了,所以指针出现了,它可以给变量起一个别人,尤其是字符串,字符串的变量名就是字符换首字符的指针,给大家举一个小例子。

1f8a3d5261809fab76f9a5ec19126a29.png

我这是定义了一个字符串,然后输出了一下,在输出的时候我用到了cesh这个变量名,这个变量名的实质是a的指针,不信我给大家演示一下。

8a2c32ee0e332f0f69ed65db99553a92.png

加一个星号之后原形毕露,*是指针变量的标志,指针变量前面加*可以把指针指向的变量输出出来,指针还可以做加减法,比如我让指针加1,它指向的变量就会发生变化。

216fa505aacfe261e4d457661c210390.png

加1之后它指向的变量就变成了b,在有些时候,可以直接用指针来声明字符串,比如:

3d8087290cd4d04bdec52a4cea4fd395.png

但有些时候我们发现指针还不太好用,比如说下面这种情况。

6fee6a5b5f2529d7d2e6ffef92e998a0.png

我声明了一个字符型指针,却不能接受用户输入的数据,这是为什么那?因为指针只能指向已经存在的变量,它只是个别名,就比如说王明托洛夫斯基维斯的别名叫小明,这个小明之所以存在是因为王明托洛夫斯基维斯的存在,如果只有一个小明,它什么也指代不了,这个问题应该怎么解决那?在声明指针的时候,再开辟一块内存空间,这样指针存在就有意义了,比如说下面这样。

e54dbcd9478cc4d7a9df79689accd73e.png

malloc的意思是动态开辟内存,它返回的是一个没有类型的指针,C语言牛就牛在内存管理上了,python再灵活但是用不了指针,所以python写不了操作系统但是C语言可以。

总结一下,字符串的指针就是字符串第一个字符的地址,你记住这句话,这篇文章其他的就都不用看了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值