简单易懂的方式去看C语言精华–指针

学c语言时间也不短了,但是相必很多人头疼C语言中指针的用法,下面作为一个几刷C语言的一点感想。

变量访问方式

那就需要从变量访问说起,变量访问方式有两种:
1.变量名
2.地址访问
变量名很容易理解,那么地址如何实现访问变量

*0x0001

其中,*就是取出地址0x0001的变量值a,相反,&就是取地址(取变量的地址)。

指针变量使用

c语言中*p就是指针,p就是地址,也就是说指针就是地址。
其定义及初始化

int *p;
int* p;

初始化

int* p = &a;
int* p;
p = &a;

在这里需要注意,*在定义指针时仅作为标识符;其他情况还是取内容。

指针类型

指针具有类型,其类型主要体现在指针偏移过程中

int *p;
p++;
printf("int类型的地址: %p", p);char *p;
p++;
printf("char类型的地址: %p", p);

p++后地址分别加4和1,就是因为指针类型一个为int,代表4字节,一个为char,为单字节。

指针哪里会用呢?

作为C语言特有的功能,指针可谓是一把利器,但我们什么时候会碰到呢?主要有两种

  1. 指定内存的位置 ,这是其他编程语言不具备的,例如我想要讲变量a保存在地址为0x0060ff00的内存中
int *p = (int *)0x0060ff00;

该句即可实现。
2. 函数调用中实现变量修改,在此举两个例子说明

//eg.1
void swap(int a, int b)
{int tem;tem = a;a = b;b = tem;
}int main()
{int a=5, b=10;swap(a, b);printf("a的值为%d,b的值为%d\n", a, b);
}
//eg.2
void swap(int *a, int *b)
{int tem;tem = *a;*a = *b;*b = tem;
}int main()
{int a=5, b=10;swap(&a, &b);printf("a的值为%d,b的值为%d\n", a, b);
}

通过上边两个例子的输出就可以看出,eg.1输出为“a的值为5,b的值为10”,eg.1输出为“a的值为10,b的值为5”。

指针数组和数组指针

初学者都会感觉这个有点难区分
那么怎么区分呢?
指针数组,顾名思义,首先是一个数组,然后数组的元素是指针。
说明形式为:type pointer_array[constant1][constant2]…[constantn];
例如:int pai[3]; 由于‘’是自右向左结合,因此从右向左看,首先看到[4]说明是一个数组,是一个包含4个元素的数组,然后看到‘
’,显然是指针类型,由此可以看出数组中存放的是指针而不是一般的类型。

那么数组指针:指向一个数组的指针。 说明形式为:type (pointer_array)[constant1][constant2]…[constantn];
这里的圆括号是必须就将这是由于方括号[],较指针说明符“
”的优先级高,若无此圆括号,编译器将把上述说明解释成成了一个数组指针。
例如:int (*ap)[2];

简单易懂的方式去看C语言精华--指针相关推荐

  1. c语言指针b 和b j,c语言精华 ------ 指针和数组

    一.指针. 它的本质是地址的类型.在许多语言中根本就没有这个概念.但是它却正是C灵活,高效,在面向过程的时代所向披靡的原因所在.因为C的内存模型基本上对应了现在von Neumann(冯·诺伊曼)计算 ...

  2. c语言位向量机伞_一文读懂C语言精华-指针变量和指向指针的指针

    1978年贝尔实验室正式发表C语言,受到众多IT从业者的热捧,即使41年过去了,C语言仍然牢牢占据最受欢迎编程语言前二的位置,许多人的程序开发之路也是从C语言开始的. 编程语言受欢迎排名 C语言简洁紧 ...

  3. 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  4. C语言基础---指针数组----初始化方式常量指针数组、指针常量数组

    文章目录 1.方式一:变量的地址放入数组中 2.方式二:字符赋值 3.方式三:字符串赋值 4.为什么指针不能修改字符串.可以修改字符数组?? 5.常量指针数组----三点注意 6.指针常量数组---- ...

  5. 《零基础看得懂的C语言入门教程 》——(十)C语言的指针原来是这样

    一.学习目标 了解指针的概念 了解指针的使用方法 了解双重指针 目录 C语言真的很难吗?那是你没看这张图,化整为零轻松学习C语言. 第一篇:(一)脱离学习误区 第二篇:(二)C语言没那么难简单开发带你 ...

  6. 了解Latch建议去看vage写的一系列本版精华贴

    想要进一步了解latch建议去看vage写的一系列本版精华贴. http://www.itpub.net/thread-1605241-1-1.html http://www.itpub.net/th ...

  7. 嵌入式C/C++语言精华文章集锦

    嵌入式C/C++语言精华文章集锦 C/C+语言struct 深层探索.................................................................. ...

  8. C语言重点——指针篇(一篇让你完全搞懂指针)

    C语言重点--指针篇(一篇让你完全搞懂指针) 一. 前言 C语言是比较偏底层的语言,为什么他比较偏底层,就是因为他的很多操作都是直接针对内存操作的. 这篇我们就来讲解C语言的一大特点,也是难点,指针和 ...

  9. 理解C语言中指针的声明以及复杂声明的语法

    昨天刚把<C程序设计语言>中"指针与数组"章节读完,终于把心中的疑惑彻底解开了.现在记录下我对指针声明的理解,顺便说下如何在C语言中创建复杂声明以及读懂复杂声明. 本文 ...

  10. c语言字符串加减_C语言中指针的介绍

    C语言中指针的介绍 指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构:能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编 ...

最新文章

  1. 折返(Reentrancy)VS线程安全(Thread safety)
  2. 极客学院 git教程
  3. 在现有项目中使用AspNet Identity 2.0 实战
  4. docker-compose.yaml的一些坑(趁我还记得赶快记下来)
  5. C++用Tarjan 算法寻找桥(附完整源码)
  6. EXE和SYS通信IOCTL方式
  7. 使用requests模块简单获取数据
  8. Java关键字:synchronized
  9. jQuery特效 | 导航底部横线跟随鼠标缓动
  10. 我的家乡河北涿州岐沟村(岐沟关)
  11. 高德地图独家携手东方时尚驾驶学校 共推“安全驾驶季”活动
  12. Kubernetes学习笔记(一):Pod详解:Pod配置、Pod生命周期、Pod调度、容器设计模式
  13. 软考高项(信息系统项目管理师)考试资料汇总和学习方法总结
  14. oracle 11g duplicate database基于备份复制数据库(六)
  15. 梦开始的地方 —— C语言数据在内存中的存储(整形+浮点型)
  16. 无鸭不过秋,这样吃鸭润燥解乏!
  17. WebDAV将会在公共领域取代FTP
  18. 58同城字体加密-多套字体文件
  19. 山海演武传·黄道·第一卷 雏龙惊蛰 第五章 蛮族少女与白泽
  20. K8S==springboot项目生成image部署到K8S

热门文章

  1. 大数据:一张图让你明白什么是大数据
  2. linux视频播放器安装程序,新手求助自带视频播放器安装问题
  3. 考研程序设计30题系列(21-30题)
  4. php行驶证识别代码,涨姿势:行驶证中车辆识别代码一定要知道的事情!!!
  5. python识别火车票二维码_python实现12306查询火车票
  6. qt 在ubuntu下的下载安装及测试
  7. python jdict_jdict python中的javascript dict
  8. iOS UITextField实时监听获取输入内容,中文状态去除预输入拼音
  9. 100以内的勾股数python_Python实现获取前100组勾股数的方法
  10. 来自一个大牛对ACM的总结