指针入门
来源:互联网 发布:天下三男捏脸数据 编辑:程序博客网 时间:2024/06/05 14:32
通过短暂的学习,了解到了指针的3种类型,分别是指针常量,常量指针,指针常量常量指针!
指针常量:
int const *p;
表示P是一个指向常量的指针,这个时候*p的值是不可以被修改的,但是可以让p指向其他的地址。
常量指针:
int *const p
表示指针是一个常量,其本身不可以修改,但是他所指向的值可以修改。
指针常量常量指针:
const int *const p
表示该指针是一个常量,并且它所指向的值也是一个常量,这种情况下其本身和它所指向的值都不可以改变。
举个例子:
int a = 100,b = 200;
int const *p1 = &a; //此时定义为指针常量
*p1 = 100; //尝试修改*p1的值是不合法的
p1 = &b; //可以让p1指向的值改变
=============================================================================
int a = 100,b = 200;
int *const p2 = &a; //此时定义为常量指针
p2 = &b; //此时尝试修改p2的指向是不合法的
*p2 = b; //但他指向的值可以改变
=============================================================================
int a = 100,b = 200;
const int* const p = &a; //此时定义为指针常量常量指针,不可以改变的他的值
p = &b; //这2种操作都是不合法的
*p = b;
====================================================================================================
指针的值都可以认为是一个地址!(数组名本身也就是一个数组,调用函数传参数时可以传a,&a,&a[0]都是合法的)
指针也可以分为一级指针,二级指针等等!!
例如int *p1 = &a,此时*p1就是一个一级指针;int**p2 = &p1,此时p2就是一个二级指针。二级指针只能指向一级指针,不能直接指向a;
再就是指针只能指向已经分配好的内存区域,如果你不想直接初始化时给指针一个值,而是想要提前准备一个空间往里面赋值,我们也
可以提前分配你给内存,借助malloc函数我们可以先开辟一个空间,例如p = (int *)malloc(sizeof(int)*100);就可以理解为我们像计算机
申请了一个占400个字节的区域(因为int一般情况下占4个字节的空间,我们就申请了4*100 = 400个字节的空间)。当然,我们在实际
运用中也有可能发生计算机内存不足的情况,我们可以用if(!p)做个判断来确认计算机是否给我们分配了内存。
还有可能我们提前的内存不够,我们可以使用relloc函数来重新申请分配内存空间。使用方式为:int* realloc(void* ptr, unsigned newsize); 其中参数ptr为原有的空间地址,newsize是重新申请的地址长度。使我们在实际运用中可以灵活分配空间来减少计算机内存的浪费!!
- 指针入门
- 指针入门
- 指针入门
- 指针入门
- 指针入门
- 指针入门
- 指针入门
- #指针入门
- 指针入门
- 指针入门
- C++指针|指针入门
- c++指针|指针入门
- c++指针 指针入门
- c++指针|指针入门
- c++指针|指针入门
- c++指针|指针入门
- c++指针|指针入门
- c++指针|指针入门
- for循环/forEach,不要删除数组元素
- 玩转产品排期:让小伙伴们高效协作
- mac nw.js 打包桌面应用程序
- 产品经理其实是一种能力,而非职业
- 【创业公司的机遇与挑战】如何在1年内从产品助理到产品高管?
- 指针入门
- 在世界互联网大会的对话上,Google CEO 劈柴与雷军聊了什么? | 乌镇峰会
- Hadoop环境搭建
- 活动结束|金融圈第19期分享:数据系统如何防范金融非统性风险?
- 产品经理如何与UI设计师进行有效沟通
- PMCAFF产品经理第一课 | 杭州站 现场集锦
- WebView总结
- 12306被喷谁受益?带着正能量重新设计12306防黄牛购票机制
- 从长板和咏春看单板滑雪固定器角度选择