C高级之指针(三)

Const

const关键字修饰变量,表示该变量不可修改。

指针变量也是变量,因此也可以使用const关键字修饰。const关键字修饰指针变量常用的有2种用法。

 

用法1. const <数据类型> *<指针变量名>

例如const char *src;

说明:const 在 数据类型 前,助记方式:const 在 * 前, 表示该指针指向的内容不可修改。

示例:

#include <stdio.h>

 

int main(int argc, const char *argv[])

{

       inta = 1;

       constint * p = NULL;

       p= &a;

       *p= 2;

 

       return0;

}

 

编译器报错如下:

const.c:8:2: error: assignment of read-onlylocation ‘*p’,*p = 2;

报错原因是因为 *p不可改写。

 

C库函数中,常把字符串操作函数的形参设为const类型以保护数据。如:

char *strcpy(char *dest, const char *src);

字符指针 src 前加 const 表示指针src 指向的字符串不可更改。

 

示例:

char *strcpy_simu(char *dest, const char*src)

{

       *src= 'A';

}

编译器报错如下:

const1.c:21:2: error: assignment ofread-only location ‘*src’,*src = 'A';

报错原因是因为 指针src指向的字符串不可改写,就达到保护源字符串的目的。

 

用法2. <数据类型> *const <指针变量名>

例如int *const a;

说明:const 在 数据类型 后,助记方式:const 在 * 后, 表示该指针本身不可修改。

#include <stdio.h>

 

int main(int argc, const char *argv[])

{

       inta = 1;

       intb = 2;

       int*const p = &a;

 

       *p= 3;

       p= &b;

 

       return0;

}

编译器报错如下:

const2.c:11:2: error: assignment ofread-only variable ‘p’,p = &b;

从编译器报错知道:*p可改写, p不可改写。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值