const 指针

const限制 4 种写法:
1: const int *p=&a;
2: int const *p=&a;
3: int *const p=&a;
4: const int *const p=&a;
5:<类型说明符> <函数名> (<参数表>) const; 类成员函数

第一种第二种的作用是一样的, 指针指向的地址可以改变, 指针指向的内容不能改变;
p=&b; //可以更改指针指向的地址;
//*p= 51 //指针指向的内容不可以改变.

第三种,指针指向的内容可以改变,单指针指向的地址不能改变
*p=51; //指针指向的内容可以改变
// p=&b; 指针指向的地址不能改变

第四种 指针指向的内容和地址都不能改变
//*p=51;
//p=&b;

数组指针:
int(*p)[3]; //定义一个指向三个成员的数组的指针;
访问元素有两种方式
int A[4][3] = { { 181, 158, 166 },
{ 168, 155, 171 },
{ 163, 164, 165 },
{ 163, 164, 183} };
p = &A[0];

数组法: (*p)[j]
指针法: *((*p)+j)

数组传参时 会退化为指针;
1.退化的意义:c语言只会以值拷贝的方式传递参数,参数传递时,如果只拷贝正个数组,效率会大大降低,太大的数组拷贝会导致栈溢出;
2.c语言将数组的传参进行的退化.将正个数组拷贝一份传入函数时,将数组名看做常量指针,传数组首元素的地址.

void B(int *arr;int a){
}

string girl = "凤姐";
string* love = &girl;
love = NULL; // 0  成为空指针

char* p = NULL;  //编程好习惯,定义的时候,就初始化为空指针
printf("%c", *p);  //访问空指针指向的内容,将导致崩溃!

函数指针;
int Func(int x); /声明一个函数/
int (*p) (int x); /定义一个函数指针/
p = Func; /将Func函数的首地址赋给指针变量p/

函数名后加const使类成员函数不能修改类内成员!
mutable可以突破const限制!

在函数后面加const只能在类的成员函数中实现!普通的函数是无法进行这样的操作的!
函数不可以修改类中的成员!相当于这个函数是一个只读函数!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值