【C语言学习】国嵌21__指针基础
2019独角兽企业重金招聘Python工程师标准>>>
一、指针基础
变量只是一段存储空间的别名,那么是不是必须通过这个别名才可以使用这段存储空间?答案是否定的。我们还可以通过指针也就是地址的方式来访问某段存储空间。
#include <stdio.h>int main()
{int i = 5;int* p = &i;printf("%d, %08X\n", i, p);*p = 10;printf("%d, %08X\n", i, p);return 0;
}
运行结果:
5, 0022FF48
10, 0022FF48
2、指针的本质
# 指针在本质上也是一个变量
# 指针需要占用一定的内存空间
# 指针用于保存内存地址的值
不同类型的指针占用内存空间的大小相同。
#include <stdio.h>int main()
{int i;int* pI;char* pC;float* pF;pI = &i;*((int *)0x22ff4c) = 100; printf("%0X, %0X, %d\n", pI, &i, i);printf("%d, %d, %0X\n", sizeof(int*), sizeof(pI), &pI);printf("%d, %d, %0X\n", sizeof(char*), sizeof(pC), &pC);printf("%d, %d, %0X\n", sizeof(float*), sizeof(pF), &pF);return 0;
}
运行结果:
22FF4C, 22FF4C, 100
4, 4, 22FF48
4, 4, 22FF44
4, 4, 22FF40
程序实现的功能:1、指针占用的内存空间2、指针的地址3、通过*号写内存
*号的意义
# 在指针声明时,*号表示所声明的变量为指针
# 在指针使用时,*号表示取指针所指向的内存空间中的值。*号类似一把钥匙,通过这把钥匙可以打开内存,读取内存中的值
# “*”还代表乘号
3、传值调用与传址调用
# 指针是变量,因此可以声明指针参数
# 当一个函数内部需要改变实参的值,则需要使用指针参数
# 函数调用时实参值将复制到形参
# 指针适用于复杂数据类型作为参数的函数中
利用指针实现变量交换函数:
#include <stdio.h>#define SWAP(a, b) {int t = a; a = b; b = t;} //宏定义也可以实现变量交换void swap(int *a, int *b) //函数定义实现变量交换
{
int t = *a;
*a = *b;
*b = t;
}int main()
{
int i = 1;
int j = 9;printf("%d, %d \n", i, j);swap(&i, &j);printf("%d, %d\n", i, j);return 0;
}
4、常量与指针
# const int *p; //p可变,p指向的内容不可变
# int const *p; //p可变,p指向的内容不可变
# int *const p; /p不可变,p指向的内容可变
# const int * const p; //p和p指向的内容都不可变
记忆口诀:左数右指
当const出现在*号左边时指针指向的数据为常量,当const出现在*后右边时指针本身为常量
指针小结:
# 指针是C语言中一种特别的变量
# 指针所保存的值是内存的地址
# 可以通过指针修改内存中的任意地址内容
转载于:https://my.oschina.net/u/141132/blog/265535
【C语言学习】国嵌21__指针基础相关推荐
- 国嵌c语言深度,国嵌C语言3部全
课程目录: 国嵌 C语言深度剖析班: 1课-基本数据类型分析 2 auto,register,static分析 3 if,switch,do,while,for分析 4 goto,void,exter ...
- 国嵌c语言深度,国嵌C语言深度剖析班(第一期)-国嵌
国嵌C语言深度剖析班(第一期)共20个课程,包含源码及教程,主要讲了基本数据类型分析.auto,register,static分析.if,switch,do,while,for分析等,本教程提供1-5 ...
- go语言学习初探(二)基础语法
变量声明 var v1 int var v2 string var v3 [10]int var v4 []int var v5 struct {f int } var v6 *int var v7 ...
- C 语言学习笔记(二):编程基础
目录 一.冯诺依曼模型 二.程序语言发展历史 三.进制 3.1 二进制 3.2 八进制 3.3 十六进制 3.4 进制转换:二进制.八进制.十六进制.十进制之间的转换 3.4.1 将二进制.八进制.十 ...
- 学习国嵌嵌入式视频笔记
本文中使用到的datasheet都来自国嵌开发板光盘,笔记也都摘抄自光盘视频 S5PV210_UM_REV1.1.pdf S5PV210_iROM_ApplicationNote_Preliminar ...
- C语言学习笔记--函数与指针
1. 函数类型 (1)C 语言中的函数有自己特定的类型,这个类型由返回值.参数类型和参数个数共同决定.如 int add(int i,int j)的类型为 int(int,int). (2)C 语言中 ...
- 【C语言学习笔记】26. 指针(3)指向指针的指针、传递指针给函数
前言 指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链.通常,一个指针包含一个变量的地址.当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置. ...
- C语言学习笔记----4(指针)
文章目录 指针深入介绍 指针类型 二级指针 字符指针 指针数组 数组指针 函数指针 函数指针数组 函数指针数组指针 回调函数 总结 指针深入介绍 众所周知,亚里士多德1撑起了古希腊科学.哲学的半壁江山 ...
- C语言学习(五)——指针
Ps:相信学过C语言的同学都知道,指针是C语言中最重要也是最难攻克的部分,下面的代码中的注释部分请同学们要仔细阅读 一.指针&指针变量 #include<stdio.h> #inc ...
最新文章
- C指针6:指针变量作为函数参数
- VS2017使用过程中得到的一些技巧方法和注意点
- Uipath 学习栏目基础教学:8、uipath 屏幕抓取获取文本
- FMDB/SQLCipher数据库管理
- linux uname命令参数及用法详解--linux查看系统信息命令
- 如何提高数据分析的效率
- 如何让遮罩层悬浮在object标签中
- 电商扣减库存_电商后台产品经理宝典
- Matlab神经网络(一)
- 异步实现商品详情页查询
- uni-app中使用HTML5 Plus
- 沐风微信营销水库模型二:建设专属秘密武器库!
- 互不相容的零缺陷与全面质量管理
- 大小限制_微信传文件有大小限制怎么办?教你3秒把100MPPT压缩成10M
- 从Office 2010的华丽转型看微软的战略野心
- Visp系列学习二:visp显示和visp_ros获取图像
- 计算机网络概述——计算机网络
- 什么是GIS,GIS的基本功能是什么?
- FFMPEG -- av_guess_format
- 强化学习待解决问题和主流Trick整理