C语言中的关键字const、volatile、extern

本文详细介绍了C++中的const关键字,包括它如何修饰变量、数组、指针及函数参数,以及const的意义。同时,讲解了volatile的作用,确保每次读取都是从内存中获取最新值。最后提到了extern关键字,用于实现跨文件的变量和函数访问。通过实例解析了这些关键字的使用场景和注意事项。

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

一、const

1、修饰一般变量
const int a=10;    int const a=10;//两种方式是相同的

const修饰的变量,不可以直接被修改,可以间接修改
直接修改

int main()
{
	const int a = 10;
	a = 20;            //error
	printf("%d", a);
	return 0;
}

间接修改

int main()
{
	const int a = 10;
	int* p = &a;
	*p = 20;
	printf("%d", a);
	return 0;
}

输出结果
请添加图片描述
const的意义:(并不属于硬性要求)

  • 让编译器进行直接修改式检查
  • 告诉其他程序员不要修改该变量
2、修饰数组

和修饰一般变量是一样的

int main()
{
	const int arr[5] = { 1,2,3,4,5, };
	arr[0] = 5;
	arr[1] = 4;
	arr[2] = 3;
	arr[3] = 2;
	arr[4] = 1;
}

请添加图片描述

3、修饰指针变量

const修饰指针的三种情况,指向的变量不可直接被修改,内容不可修改

int main()
{
	int a = 10;
	const int* p = &a;//p指向的变量不可直接被修改
	int const* p = &a;//和上面是一样的
	*p = 100;//error
	p = 100;//true
}

int main()
{
	int a = 10;
	int* const p = &a;//p的内容不可修改,p的指向不可修改
	*p = 100;//true
	p = 100;//error
}
int main()
{
	int a = 10;
	const int* const p = &a;
	*p = 100;//error
	p = 100;//error
	return 0;
}
4、修饰函数的参数
void show(const int* _p)//防止改变a的值
{
	printf("%d", *_p);
}
int main()
{
	int a = 10;
	int* p = &a;
	show(p);
}
5、修饰返回值
const int* gar()
{
	int a = 10;
	return &a;
}
int main()
{
	int* p = gar();//虽然能运行但是会有报警,加上const报警消失,但是*p就不能修改了
	*p = 20;
}

请添加图片描述
一般在内置函数中返回值加上const是没有意义的
一般在内置函数中返回值加上const是没有意义的

二、volatile(易变关键字)

volatile是为了防止编译器优化,让编译器更稳定的读取代码,volatile让每次读取代码都从内存当中读取

三、extern

使变量和函数可以跨文件访问
源文件test.c

#include"test.h"
int main()
{
	printf("%d\n", a);
	show();
}

源文件main.c

#include"test.h"
int a = 10;
void show()
{
	printf("hahaha");
}

头文件test.c

#pragma once
#include<stdio.h>
extern int a;
extern void show();

最后:文章有什么不对的地方或者有什么更好的写法欢迎大家在评论区指出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值