深入理解C指针之---指针操作和比较
该系列文章源于《深入理解C指针》的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教。
指针作为一种特殊类型的变量,必须遵守C语言中变量先声明后使用的原则。本节内容中指针的操作主要包括指针的声明、指针值的获取、指针的解引、指针的打印、指针的阅读及其他内容。
一、指针的操作:
1、指针的声明,切记指针是一种特殊变量,这种变量中没有直接存储数值,存储的数值是另外变量的地址。
其中,看代码第6、7、8行,都是指针变量的声明,无论*的位置如何,靠近int还是变量名,还是哪个都不靠近,都可以表示,根据自己的习惯坚持即可,个人建议靠近变量名好。
2、地址操作符,使用&获取变量地址的符号,常用来为指针变量赋值。
其中、代码的第6、7、9行,都是地址操作符的应用
3、指针的打印,使用%p占位符即可打印指针变量的值,另外变量的地址。
其中、代码的第12、13、14、19、21、23行都是打印指针值的应用
4、指针的解引用,通过指针获取指针值对应的变量的值。
其中、代码的第12、13、14、19、21、23行都是指针解引用的应用。
1 #include <stdio.h>
2
3 int main(int argc, char **argv)
4 {
5 int iVar = 19;
6 int *ptrVar1 = &iVar;
7 int* ptrVar2 = &iVar;
8 int * ptrVar3 = NULL;
9 ptrVar3 = &iVar;
10
11 printf("the iVar is %d and address is %p\n", iVar, &iVar);
12 printf("the ptrVar1 is %p and *ptrVar1 is %d\n", ptrVar1, *ptrVar1);
13 printf("the ptrVar2 is %p and *ptrVar2 is %d\n", ptrVar2, *ptrVar2);
14 printf("the ptrVar3 is %p and *ptrVar3 is %d\n", ptrVar3, *ptrVar3);
15
16 iVar++;
17 printf("the iVar is %d and address is %p\n", iVar, &iVar);
18 (*ptrVar1)++;
19 printf("the ptrVar1 is %p and *ptrVar1 is %d\n", ptrVar1, *ptrVar1);
20 (*ptrVar2)++;
21 printf("the ptrVar2 is %p and *ptrVar2 is %d\n", ptrVar2, *ptrVar2);
22 (*ptrVar3)++;
23 printf("the ptrVar3 is %p and *ptrVar3 is %d\n", ptrVar3, *ptrVar3);
24
25 return 0;
26 }
二、指针的补充:
1、null在C语言中充分体现了C语言的逻辑混乱,C语言中null的出现主要和指针变量有关。
null宏定义中被定义为: #define NULL ((void *)0)这种定义一般在stddef.h、stdlib.h和stdio.h中出现;
null可以用来初始化指针变量,表示指针变量指向空,也可以直接将指针变量赋值为零也可;
null可以在字符中表示全为0的字节,表示不包含任何内容;
人就像是被蒙着眼推磨的驴子,生活就像一条鞭子;当鞭子抽到你背上时,你就只能一直往前走,虽然连你也不知道要走到什么时候为止,便一直这么坚持着。