么很多人不爱学C语言那?因为C语言里有个概念叫指针,有时候一个指针还不够,还要来个双重指针,不熟悉的人不要说写代码了,看着就迷糊,而实际上指针不就是个地址嘛。
我们都知道程序在运行的时候变量是存储在内存中的,如何去访问这些数据那?就需要用到内存地址,内存地址是一个十六进制的数字,比如说0x403024这就可以表示一个变量,拿这个东西也可以访问变量,但是如果变量都长这个样子,那程序员可就惨了,所以指针出现了,它可以给变量起一个别人,尤其是字符串,字符串的变量名就是字符换首字符的指针,给大家举一个小例子。
我这是定义了一个字符串,然后输出了一下,在输出的时候我用到了cesh这个变量名,这个变量名的实质是a的指针,不信我给大家演示一下。
加一个星号之后原形毕露,*是指针变量的标志,指针变量前面加*可以把指针指向的变量输出出来,指针还可以做加减法,比如我让指针加1,它指向的变量就会发生变化。
加1之后它指向的变量就变成了b,在有些时候,可以直接用指针来声明字符串,比如:
但有些时候我们发现指针还不太好用,比如说下面这种情况。
我声明了一个字符型指针,却不能接受用户输入的数据,这是为什么那?因为指针只能指向已经存在的变量,它只是个别名,就比如说王明托洛夫斯基维斯的别名叫小明,这个小明之所以存在是因为王明托洛夫斯基维斯的存在,如果只有一个小明,它什么也指代不了,这个问题应该怎么解决那?在声明指针的时候,再开辟一块内存空间,这样指针存在就有意义了,比如说下面这样。
malloc的意思是动态开辟内存,它返回的是一个没有类型的指针,C语言牛就牛在内存管理上了,python再灵活但是用不了指针,所以python写不了操作系统但是C语言可以。
总结一下,字符串的指针就是字符串第一个字符的地址,你记住这句话,这篇文章其他的就都不用看了。