为什么C语言中的字符串可以用指针表示?

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

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

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

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

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

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

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

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191210A06JXH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券