C/C++学习笔记-数组和指针

——————学习使人进步

1、指针和const限定符

主要从两个方向来说明const指针和const对象,一是const修饰的指针和非const修饰的指针。二是const修饰的对象和非const修饰的对象。

代码:

 

const int *ptr; 
 //或
int const * ptr;

这里只说明被const限定的指针,

 

特点:a,指针所指向的对象必须为常量,不能被改变的(不能通过解引用的方式修改值);

            b,指针本身不是常量,也就是所,可以指向这个,可以指向那个。并不是固定的。

 

	const int *p;//定义一个const指针
	int a = 10;//非限定对像
	const int b = 10;//const对象
	const int c = 20;//const对象
	p = &a; //ok,const指针可以指向非const对象
	p = &b; //ok
	p = &c; //ok,可以指向a,b,c所以说是变化的。
       *p = 10;//error,const指针一但初始化后, 不能被修改, 即使是赋回同样的值.

const限定的对象

 

 

const int b = 10;//const对象
b=20;//error,不能改变

 

2、动态数组

为什么要动态数组,在数组类型的变量中,有几个非常重要的限制。第一个,数组长度固定不变(当然可以用前面提到的vector容器解决),其次是在程序编译时必须知道其长度,还有就是只在定义它的语句块内存在。在Java中数组是可以动态设置的。也就是在编译时不需要知道其长度,换句话说,可以用变量来定义数组(int arr[n]的形式)。

定义动态数组需要使用两个关键字(new delete),new和Java里面的用法差不多,都是向堆内存申请空间的关键字,动态申请的空间必须使用delete显示释放,因为如果不释放他便一直存在直到内存溢出

 语法:类型 指针变量 = new 类型名;

 

使用new申请空间:

特点:

      1、没有名字,只能通过指针访问地址。

      2、申请的是堆空间。

 举例:string *p = new string[10]();//括号可有可无,类似于Java构造函数做初始化,但是如果有const限定就必须进行初始化

 

        int n =10;
	int *p = new int[n];//ok,可以在运行时,获取n长度,程序是先编译(检查缺少标点等),在运行阶段
	int arr[n];//error,在编译时检查n是否为常量,否则编译不通过

 

 

 

参考文献:

const限定符参考自:http://blog.csdn.net/njnu_mjn/article/details/6892383

动态数组参考自:http://blog.csdn.net/niubidexiebiao/article/details/50879004

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值