指针申请内存后到底有什么变化?

我的个人网站:
http://riun.xyz

---

 

我是一名在校大学生,以下纯属个人观点,都是经过我反复思考过的东西,我感觉这些东西在我学c时带了了许多不便,学校讲的也不好,只能自学。

若您发现任何错误,请发到我邮箱1195264226@qq.com 进行纠正,非常感谢!

 

在讲这个问题之前要先纠正一个大多数人嘴边的错误:

 

为一个指针申请内存,并不是人们理解的那个‘为’指针申请空间,

而是单独申请一个空间,把这个空间的地址给指针,

申请空间时都是这样的格式:

p=(type*)malloc(sizeof(type)*n);

那个等号的意义是:把这块空间的地址赋给p,比如这块单独申请的空间地址是0xa11,那么p里面存储的地址就是0xa11,

只是简单的把p指向了那块空间,指针本身的空间是不会变的,这个可以做一个实验:

char *p;

printf("%d\n",sizeof(p));

p = (char*)malloc(sizeof(char)*100);

printf("%d\n",sizeof(p));

输出的数是一样的,这里要讲一下sizeof的功能

sizeof用于输出变量占的字节数,就是占的内存是多少

可以看到并没有因为 ‘为’ 指针申请了空间这个指针的内存就变大,也就是说,并不是所谓的 ‘为’ 指针申请空间

大家都知道指针是存放地址的

这个指针还是那个指针,只是指针存放的地址改变了,变成了一块申请了了的内存地址。

 

那么,指针申请内存后到底都有什么区别呢?

首先,如果不申请内存给指针,那么这个指针只能用来改变指向,就是说这个指针只能指指这里指指那里,不能对指针进行输入操作

因为如果对没有分配内存的指针进行输入的话,让你自己想想,指针只是存放地址的容器,你这个输入到底输到了哪呢?

所以直接对指针进行输入操作的地方,都要为指针申请空间。

 

今天有事,后续更新。。。。。。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值