c语言学习笔记之指针(一)

关于读《深入理解c指针》的读书笔记,欢迎指正。
指针就是一个存放内存地址的变量。
而c程序在编译后,会以三种形式使用内存
(1)、静态、全局内存
静态声明的变量分配在这里,全局变量也使用这部分内存。这些变量在程序开始时分配,直到程序终止才消失。所有函数都能访问全局变量,静态变量的作用域则局限在定义他们的函数内部。
(2)、自动内存
这些变量在函数内部声明,并且在函数调用时才创建。他们的作用域局限于函数内部。
(3)、动态内存、
内存分配在堆上,可以根据需要释放,直到释放才消失。指针引用分配的内存,作用局限于内存的指针。

在这里插入图片描述
指针变量包含内存中别的变量、对象或函数的地址。对象就是内存分配函数(如malloc)分配的内存。对象可以是任何c数据类型,但指针本身并没有包含所应用数据的类型信息,指针只包含地址。
c的动态内存分配实际上就是通过使用指针实现的。malloc和free函数分别用来分配和释放动态内存

关于声明指针
通过在数据类型后面跟*在加上指针变量的名字可以声明指针。
如:int *pi(空白符的使用是个人喜好)
pi的内容最终应该赋值为一个整数变量的地址,这些变量没有被初始化,所以包含的是垃圾数据,只有初始化后,指针才会正常工作;

而地址操作符&会返回操作数的地址。我们可以用这个操作符来初始化pi指针。如(num = 0; pi = #)pi指向的是num的地址。
变量的地址可以通过打印来确定。
printf函数有几种格式说明符在打印指针的值时使用
在这里插入图片描述
%p和%x的不同之处在于:%p一般会把数字显示为十六进制大写
在不同的平台上用一致的方式显示指针的值比较困难。一种方法时把指针转换为void指针,然后用%p格式说明符来显示,如:
printf(“value of pi:%p\n”,(void )pi);
我们也可以用间接引用操作符解引指针,间接引用操作符(
)返回指针变量指向的值,一般称为解引指针。例如:

int num = 5;
int *pi = #
printf("%p\n",*pi)//显示5

我们可以把解引操作符的结果用作左值,所有的左值都必须可以修改,因为他们会被赋值
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值