博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
06深入理解C指针之---指针操作和比较
阅读量:5058 次
发布时间:2019-06-12

本文共 1778 字,大约阅读时间需要 5 分钟。

  该系列文章源于《深入理解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 
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;1011 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);1516 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);2425 return 0;26 }

二、指针的补充:

  1、null在C语言中充分体现了C语言的逻辑混乱,C语言中null的出现主要和指针变量有关。

    null宏定义中被定义为: #define NULL  ((void *)0)这种定义一般在stddef.h、stdlib.h和stdio.h中出现;

    null可以用来初始化指针变量,表示指针变量指向空,也可以直接将指针变量赋值为零也可;

    null可以在字符中表示全为0的字节,表示不包含任何内容;

    null可以表示字符串表示没有任何内容;

    null语句表示只有一个;没有任何内容的语句

  2、void指针,通用指针,可以存放任何的数据类型的指针,void指针与char指针的存储和对其方式相同,void指针在使用前一般需要先强制转换下    

转载于:https://www.cnblogs.com/guochaoxxl/p/6947339.html

你可能感兴趣的文章
C#Hashtable与Dictionary性能
查看>>
10个让你忘记 Flash 的 HTML5 应用演示
查看>>
8个Python面试必考的题目,小编也被坑过 ToT
查看>>
SQL Server 使用作业设置定时任务之一(转载)
查看>>
centos 图形界面和命令行界面切换(转载)
查看>>
Maven启用代理访问
查看>>
Primary definition
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
发送请求时params和data的区别
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>
如何增强你的SharePoint 团队网站首页
查看>>
FZU 1914 Funny Positive Sequence(线性算法)
查看>>
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
基于grunt构建的前端集成开发环境
查看>>
MySQL服务读取参数文件my.cnf的规律研究探索
查看>>
java string(转)
查看>>
__all__有趣的属性
查看>>