C程序设计语言(K&R)学习笔记--4.const小结

本文详细解析了C++中const修饰符的应用场景,包括如何使用const保护函数参数、创建常量数组、定义只读指针及常量指针等,并通过示例代码展示了不同情况下const的具体作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//部份内容参考 http://www.bccn.net/Article/kfyy/cyy/jszl/200607/4166.html

1.为了防止传递的函数参数不被修改,在调用函数的形参中用const关键字

 

int FindNum(const int array[], int num, int conut);//声明函数

//code...

int FindNum(const int array[], int num, int count)
{
	  int i;
	  int flag = 1;

	  for (i = 0; (i < count) && flag; i++)
	  {
		   if (array[i] == num)
		   {
			   flag = 0;
			   break;
		   }
	   }
	   return flag;
}
//code...


2.const可以用来创建数组常量、指针常量、指向常量的指针等:

  • const char ch = 'a';

const int a[5] = {1, 2, 3, 4, 5};  

#include <stdio.h>

void main(){
	const int a=5;
	a=10; // error:specifies const object
	printf("%d\n",a);

}

  • const int *p = a;

       

#include <stdio.h>

void main(){
	int a[5] = {1, 2, 3, 4, 5};
	int b[5] = {6, 7, 8, 9, 10};
	const int *p = a;
	int i ; 
	//遍历数组 a 
	for(i=0;i<5;i++,p++){
		printf("%d\t",*p);
	}
	printf("\n");
	
	//*p=1; //error:specifies const object
	p=b;
	// 遍历数组 b
	for(i=0;i<5;i++,p++){
		printf("%d\t",*p);
	}
	printf("\n");

}

  p*=1 

编译出错: error:specifies const object

const int *p = a; 

结论: 该指针变量可以被赋值多次,不能修改它所指向的元素的值,可以访问它所指向数组里的所有元素,


  • int * const p = a; 

#include <stdio.h>


void main(){
int a[5] = {1, 2, 3, 4, 5}; 
int * const p = a;
int i;
for(i=10;i<15;i++){
*p=i; 
printf("%d\t",*p);// 结果:10 11 12 13 14
//p++; //error:specifies const object
}
printf("\n"); 
//遍历数组a
for(i=0;i<5;i++){
printf("%d\t",a[i]); //结果: 14 2 3 4 5
}
printf("\n");
p=&a[1];//error:specifies const object




}

  int * const p = a; 

结论: 该指针变量只能被赋值一次,且只能读取及修改它所指向的元素的值,不可以访问数组中的其它元素,         

  • const int * const p = a;

#include <stdio.h>

void main(){
	int a[5] = {1, 2, 3, 4, 5}; 
	const int * const p = a;
	//*p=6;//error:specifies const object
	//p++;//error:specifies const object
	printf("%d\n",*p);//结果:1

}

const int * const p = a;  

结论:该指针变量只能被赋值一次,只能读取它所指向的元素的值,不可修改值,不可以访问数组中的其它元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值