栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

一、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是没有意义的

二、volatile(易变关键字)

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

三、extern

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

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

源文件main.c

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

头文件test.c

#pragma once
#include
extern int a;
extern void show();
最后:文章有什么不对的地方或者有什么更好的写法欢迎大家在评论区指出来。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011451.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号