学习常量中指针变量和它指向的实体的个人理解

int const a 等价于 const int a,表示a为常量,const int a个人认为养成写const int a的习惯较好,优点之后说。

int const *p表示p所指向的值不可变,可以修改p的值使其指向其他int变量,但不能是其他类型变量如char,我的理解是int和char的指针虽然大小一样,但指向的内容大小不一样。百度这一块的时候偶然看到这么一个例子:

void T(char a[])
{
 cout<<sizeof(a)<<endl;
 int b[5] = {1,2,3,4,5};
 int *c = b;
 cout<<sizeof(c)<<endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
	char a[6] = "hello";
	cout<<sizeof(a)<<endl;
	T(a);
	return 0;      
}

输出结果为6 4 4。

因为main函数中的sizeof(a)参数是字符数组,所以计算过程是6*1 = 6。当a作为参数传递到T函数时,程序不会在栈上分配一个大小为6的数组,此时传递的是一个地址,也就是指针,所以结果为4。

int * const p表示p是一个指向整型的指针常量,它的值不能改变,也就是不能再指向其它变量,但可以改变它指向的变量的值。

所以声明int const *p时,写成const int *p,有利于与int * const p区分开来。


const int * const p(int const * const p)表示无论是指针本身还是它所指向的值都是常量。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值