写在前面:
指针作为C语言的精髓所在,可以说学好了指针,C语言也就是学好了,然而指针并不是很好学的,我个人也是掌握的不好,所以自己归纳总结一下,回到基础知识,将其夯实。也就是说,会从最开始讲解,也可以说是自己的一个笔记,字典吧。
指针的定义
我们常说的指针,严格来说是叫做指针变量,从名字就可以看出,它是一个变量,并且里面存放的是一个地址,与普通的变量做类比,就好记很多。指针变量在内存中是占4个字节的,不管你定义的是什么类型的指针变量,区别在于读的方式,比方说char是一个一个字节地读取,int则是直接读取4个字节的内容。不管如果不涉及和硬件打交道的话,原则上我们是指向的内容是什么类型的就定义什么类型的指针变量就可以了。
不同于普通变量的定义,指针变量在定义的时候多了一个 *
int *p;
取地址操作
说道指针,除了 *
这一种操作,自然还有其他的操作,经常与指针绑定在一起使用的运算符有 &
,&
符号在这里意味着取地址,就是将内存的地址提取出来,相当于找到你家的门牌号。
现在我们结合前面学到的 *
和 &
来举个栗子。
char a = "hello";
int b = 123;
char *pa = &a;
int *pb = &b;
*pa = "pointer";
*pb++;
在上面的代码中,我们可以看到,我们指针的 *
符号在两种不同的地方使用了,一是在刚定义指针变量的时候,可以理解为我如果不带个 *
,谁知道我是指针啊。第二次出现是在赋值操作中出现,这被意为解引用,解释应用的意思,知道有这样一个名词就可以了,你需要深刻地记忆的是,这个时候带 *
是意为要对该处内存里存放的内容进行处理。
也就是说牢记两条:
- 定义时需要使用
*
- 对内容进行修改时使用
*