C语言学习笔记 指针概述
来源:互联网 发布:自适应滤波器 编程 编辑:程序博客网 时间:2024/06/09 23:10
指针指向的是内存资源,每个内存空间都对应着一个address,相当于一个门牌号,指针用来存放的就是“门牌号”,拿着“门牌号”就能找到与之相应的内存地址,从中就可以读取内存的内容了。
指针:指针变量,用于存放指针。在通常情况下,人们定义指针的名称都是以p为开头。
在定义指针中要考虑两种情况:指针的大小,指针指向哪里.。
(1)指针大小:
以32位系统为例,如果寻址范围为4G,则需要用一个32bit的数去描述内存地址。
1G>>>>>2^30, 4G>>>>>2^32,这样也可以看出,32位系统最大只能支持的4G内存。
int *p; *p占32个bit ,4个字节
(2)读取地址内容:
结构类型 * p
char *p 指向p的地址,一次性读取1b的数据
int *p 指向p的地址,一次性读取4b的数据
#include <stdio.h>int main (){ int *p_int; char *p_char; printf("The p_int is %lu,the p_char is %lu\r\n",sizeof *p_int,sizeof *p_char); return 0;}运行以上测试程序就能看出 int 的指针 占有四个字节,char的指针占有1个字节。
注意:这里用的的“%lu”的修饰符,防止在一些编译环境中报错,用%d 也是可以的。
下面看一下如何给一个指针赋值,在定义的指针的过程中一定要保证指针所指的地址具有合法性。
#include <stdio.h>int main (){ int a =0x12345678; int *p_int; p_int= &a; printf("the *P-int is %x \r\n",*p_int); return 0;}
首先定义一个数、指针,然后用指针去指向这个数所在的地址,然后通过*p 就可以读取指针所指向内存咯空间的内容了。
#include <stdio.h>int main (){ int a=0x12345678; char *p1; p1=&a; printf("The a is %x,the *P1 is %x,the *p2 is %x,the *p3=%x. \r\n",a,*p1,*(p1+1),*(p1+2)); return 0;}返回的结果是 p1=78,p2=56,p3=34.指针所指的地址其实数数据的其实地址(低地址),由低到高长度是对应的数据类型,每小段以8bit(1字节)位单位。
以我现在的编译环境中,0x12345678所存的内容 从内存空间的低到高的存储内容 应该是:78》56》34》12
在读取内存中 我本次运用的是 char类型,应该改成unsigned char进行内存的读取。
0 0
- C语言学习笔记 指针概述
- c语言指针学习笔记
- C语言指针学习笔记
- C语言指针学习笔记
- C语言指针学习笔记
- c语言学习笔记--指针
- C语言学习笔记-指针
- C语言指针学习笔记
- C语言学习:指针(笔记)
- C语言学习笔记-指针
- C语言指针学习笔记
- 《C语言宝典》学习笔记(二):概述
- IOS学习笔记03---C语言概述
- C语言学习笔记 lesson2 编程概述
- C语言学习笔记之 第一讲:C语言概述
- C语言笔记-概述
- C语言学习笔记——指针
- C语言学习笔记(12指针)
- iOS中edgesForExtendedLayout与automaticallyAdjustsScrollViewInsets
- Spring Framework 模块介绍
- 蓝桥杯 历年试题 分糖果
- MachineLearning Practice: CART
- zTree 使用笔记
- C语言学习笔记 指针概述
- C#成神之路<1> 对面向对象编程的加深理解
- scanf 详解
- UINavigationController练习
- 设计模式从感兴趣的开始
- 安卓学习之路!
- JAVA hashmap的实现
- 支付宝 五福
- 自己项目中对已存在的Log性能优化