天天看点

06深入理解C指针之---指针操作和比较

深入理解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的字节,表示不包含任何内容;

人就像是被蒙着眼推磨的驴子,生活就像一条鞭子;当鞭子抽到你背上时,你就只能一直往前走,虽然连你也不知道要走到什么时候为止,便一直这么坚持着。

继续阅读