作者:心叶
时间: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. java redis 主从配置_Redis实现主从复制(MasterSlave)
  2. Docker CEO Ben Golub:Docker借助开源、天时走向成功
  3. Linux 内核参数及Oracle相关参数调整
  4. Spring Boot + Activiti 在浏览器显示工作流图
  5. 转 java中static{}语句块详解
  6. .net中的lock
  7. Python自学电子书大全
  8. 把Caffe的模型转换为Pytorch模型
  9. 梦幻西游ps计算机,五开选择PS与NE:那是因为效率高的缘故
  10. 基本概念:线与逻辑、锁存器、缓冲器、建立时间、缓冲时间
  11. 树莓派raspios(原raspbian)下载地址
  12. 大数据高频面试题总结
  13. 求质数(素数)的方法
  14. 从C、C++、Java到Python,编程入门到底学什么语言好?
  15. JAVA我的世界突然没声音_我的世界电脑版没声音怎么办
  16. 数加平台在数据挖掘项目中的实践
  17. LeetCode 875.爱吃香蕉的珂珂
  18. mysql数据库in函数查询是否走索引
  19. 基于经度坐标校正鱼眼图像---python实现
  20. U盘或移动硬盘无法弹出的解决方法

热门文章

  1. windows下完全卸载安全狗
  2. Labview字符串的基础讲解
  3. 访日本Marza团队:Unity引擎制作VR动画实践
  4. 线性数据与非线性数据的区别
  5. java 硬币_如何将一笔钱兑换成纸币和硬币
  6. matlab 因果分析,matlab非参数的格兰杰因果分析
  7. Adobe Edge Animate1.0 --使用Web字体
  8. 遥感影像镶嵌在不同软件上的比较——Envi, Erdas, Qmasaic
  9. SELinux的学习
  10. UVM学习笔记—前门访问/后门访问