C语言“指针”学习总结(1)

一、什么是指针

        在算计中,数据被储存在内存里,计算机是如何找到数据的位置呢?答案是通过地址查找,内存里的地址是已经约定好的,以字节为单位,如果我们想要访问内存的地址,那就用到指针变量来储存和访问内存里的地址。可以说指针就是地址,指针变量就是储存地址的变量。

二、指针变量的创建和表示方法

        一般来说,指针变量通常是“变量类型+变量名”。比如

int i=0;
int* a=&i;

表示创建了一个指针变量a,指向了变量“i”的地址,那么就可以使用指针变量“i”来间接使用变量a,比如

*i=1;

表示将“i”解引用,并同时将i指向的变量的值修改为“1”,因此,a的值便变成了“1”。同时,指针也可以用来修改被“const”关键字修饰的数据。

三、创建指针的注意事项

        指针在创建时需要指向一个明确的地址,否则就是创建了一个野指针,野指针是很危险的,因为你也不知道它指向了谁,在使用的时候容易造成不必要的意外。

四、数组名和函数名

        数组名和函数名就代表了数组和函数的首地址,但是在数组中,“&数组名”,sizeof(数组名),在这里的数组名代表着整个数组,例如int arr[10]“&arr”指向了整个数组的地址,类型是int (*)[10],sizeof(arr)的返回值是整个数组所占用的字节数。

五、指针访问的地址大小

        众所周知,地址的大小取决于电脑硬件,在32位环境下的地址是4个字节,64位环境下是8个字节,下面举一个例子

int a=10;
int*p=&a;
char*pp=(char*)p;
*pp=1;

这里我们访问p的时候,可以访问四个字节,但是pp只能访问1个字节,所以*pp=1并不能将最初的a值变为1,他只是将a所占用的四个字节其中的一个字节修改了,总结下来就是“可访问的内存大小取决于指针的类型”,有时候可以利用这一特性去修改特定位置的数据。

六、函数和数组传址

        在有些时候我们需要将数组或者函数作为参数传入另一个函数,从本质上来说,传入的是函数或者数组的地址,当传入数组时,数组名代表数组首元素地址,当传入函数时,函数名是函数的地址,同时传入的函数被称为“回调函数”。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值