作者:心叶
时间:2018-04-21 17:24

定义

指针是一个变量,其值是另一个变量的地址,地址代表的是在内存中的位置。

需要记住的是,数组变量本身就是一个指针。

地址的类型

地址是存在类型的,是不是感觉好奇怪,指针不是代表一个地址的吗,地址还有类型吗?看一个例子:

int    *ip;    /* 一个整型的指针 */double *dp;    /* 一个 double 型的指针 */float  *fp;    /* 一个浮点型的指针 */char   *ch;     /* 一个字符型的指针 */

其实指针永远都只是一个代表一个地址的十六进制数,所谓的类型,指的是指针指向的变量的类型。

使用指针

如何定义一个指针,前面的例子应该知道了,那么如何打印那个十六进制的地址是多少和或者指针指向的数据是多少:

//通过&运算符获取了i的地址并保存到intP中去int *intP; = &i;printf("intP存储的地址为:%p,存储的地址指向的数据为:%d\n", intP, *intP);

指针可以进行运算:++、--、+、-

此外,指针还可以用关系运算符进行比较,如 ==、< 和 >

int intArr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};//先定义一个指针执行数组第一个元素int *intArrP = &intArr[0];printf("此时intArrP存储的地址为:%p,数据为:%d\n", intArrP, *intArrP);//自增一下看看结果(每增加一次,它都将指向下一个整数位置)intArrP++;printf("自增以后intArrP存储的地址为:%p,数据为:%d\n", intArrP, *intArrP);

指针还可以指向指针

int data = 5201314;int *p1 = &data;int **p2 = &p1;printf("%d\n", data); //都是5201314printf("%d\n", *p1);printf("%d\n", **p2);

结构体和指针

结构体中对指针的使用会稍微特殊一点,主要因为结构体本身的特殊性,想使用结构体中的一个值,一般分为通过结构体自身和指向结构体的指针二种情况,具体看下面的例子:

struct Node{int val;};//先建立一个结构体数据struct Node node;node.val = 1;struct Node *nodeP; //创建一个指向刚刚的结构体的指针nodeP = &node;printf("%d\n", nodeP->val);//指向结构体的指针用->printf("%d\n", node.val);//结构体自身用.

C语言中关于指针等相关理解和使用事宜相关推荐

  1. 指针在c语言中的运用,怎么理解C语言中的指针,如何运用?

    恰好我之前写了一系列介绍 C 语言的文章,介绍了什么是指针,以及为什么要使用指针,下面摘录一部分,感兴趣的话,可以点我了解更多. 什么是 C语言指针? 不同的数据类型的主要区别在于占用的存储空间不同. ...

  2. c语言中指针的类型,学习C语言中的指针类型

    摘要:结合我院学生十年来参加全国计算机等级考试(C语言部分)情况,通过分析成绩分布与题型关系,我们发现指针方面的题型失分率最高.在此基础上结合教学实际,本文提出学习指针知识的方法和顺序过程,并将其应用 ...

  3. c语言二级指针有什么作用,C语言中二级指针的实例详解

    C语言中二级指针的实例详解 C语言中二级指针的实例详解 用图说明 示例代码: #include int main(int argc, const char * argv[]) { // int a = ...

  4. c语言中数组的概念及作用,详解C语言中的指针与数组的定义与使用

    指针的特点 他就是内存中的一个地址 指针本身运算 指针所指向的内容是可以操作的 操作系统是如何管理内存的 栈空间 4M~8m的大小 当进入函数的时候会进行压栈数据 堆空间 4g的大小 1g是操作系统 ...

  5. 详解:C语言中的指针和p, p+1, *(p+1), *P+1, p[0], p[0] 的含义

    解析:C语言中的指针和p, p+1, *(p+1), *P+1, p[0], &p[0] 每一种表达式的含义  一.先解决一个问题:什么是指针 指针就是存放地址的变量.很好,百度上就是这个答案 ...

  6. c语言中程序偏离,C语言中的指针加减偏移量

    首先看一段程序: #include int main() { int a[5] = {1, 2, 3, 4, 5}; int* p = (int*)(&a + 1); printf(" ...

  7. C语言中的指针有什么作用

    C语言中的指针的作用是:通过指针不仅可以对数据本身,还可以对存储数据的变量地址进行操作.指针就是内存地址,指针变量是用来存放内存地址的变量. 指针定义: 指针,是C语言中的一个重要概念及其特点,也是掌 ...

  8. Henry前端笔记之 UI组件库中table与slot相关理解

    Henry前端笔记之 UI组件库中table与slot相关理解 作用域插槽: 解构赋值基础:https://developer.mozilla.org/zh-CN/docs/Web/JavaScrip ...

  9. c语言野指针应用,C语言中野指针的深入解析

    C语言中野指针的深入解析 C语言中野指针这一块是C语言的难点,下面小编为大家带来了C语言中野指针的深入解析,欢迎大家阅读! "野指针"的成因主要有两种: (1)指针变量没有被初始化 ...

最新文章

  1. 3 calender python_python3笔记二十一:时间操作datetime和calendar
  2. windows下安装mongodb步骤
  3. java网格式布局登录界面_Java学习笔记------自己书写的登录界面实例
  4. 如何理解JavaScript多个连续箭头函数书写方式
  5. AQS理解之六,AQS的其他实现类
  6. Linq之隐式类型、自动属性、初始化器、匿名类
  7. 【MYSQL】总结MySQL中对表内容的关联运算(join)
  8. sql server如何输出排序序号_Group by中子查询order by排序失效问题分析
  9. 《大话设计模式》Python 版代码实现
  10. Angular动态创建组件
  11. 逻辑人渴望控制那些让他们感兴趣的东西
  12. 没有一款趁手的数据监控软件?试一下NetData不,用了你就绝对离不开他!
  13. 基于HTML5坦克大战游戏简化版
  14. C# Task.FromResult的用法
  15. 笔记本的无线网卡驱动服务器,无线网卡驱动,详细教您怎么笔记本无线网卡驱动...
  16. 如何学计算机打字,新手学习计算机打字全文阅读
  17. 基于ocanvas.js的饼图实例展示
  18. java 判断是否回文
  19. idea:使用idea连接mysql数据库
  20. 【WPS在线文档转换】

热门文章

  1. 【shell案例】检测磁盘使用率
  2. linux版安全狗安装与使用
  3. sketch android xml,史上最详细Sketch Measure讲解
  4. 信息学计算机奥林匹克竞赛题,第35 届信息学奥林匹克竞赛(NOI 2018)二试赛题
  5. 2022年西北工业大学计组试点班龙芯杯个人赛参赛作品
  6. [NOIP2017模拟]Fantasy Strange Tree
  7. 雨课堂主观题导出 2022-05-30
  8. 谷粒商城-高级篇-aiueo
  9. SV学习笔记—类型转换
  10. 2016计算机技能大赛,教育部关于公布2016年全国职业院校技能大赛获奖名单的通知...