C语言变量的属性

举报
yd_274589494 发表于 2023/07/26 12:14:42 2023/07/26
【摘要】 @TOC 前言本篇文章将为大家介绍一些C语言中变量的属性。 一、什么是变量的属性1.C语言中的变量可以有自己的属性2.在定义变量的时候可以加上 属性 关键字3.属性关键字代表变量有特殊的意义示例:int main(void){ auto int a; static int b; extern int m; register int i; return 0;} 二、auto属性 1.auto属...

@TOC


前言

本篇文章将为大家介绍一些C语言中变量的属性。

一、什么是变量的属性

1.C语言中的变量可以有自己的属性
2.在定义变量的时候可以加上 属性 关键字
3.属性关键字代表变量有特殊的意义
示例:

int main(void)
{
	auto int a;
	static int b;
	extern int m;
	register int i;
	return 0;
}

二、auto属性

1.auto属性概念

1.auto属性是C语言中局部变量中默认的属性
2.使用auto修饰的变量保存在栈上
3.局部变量默认使用auto修饰
4.栈上保存的变量生命周期会随着栈的变化改变。

三、static属性

1.static属性概念

1.static修饰一个变量就说明这个变量是静态的
2.static修饰的局部变量存储在程序静态区
3.static修饰的全局变量作用域只是在声明的文件中
4.static修饰的函数作用域只是在声明的文件中

下面程序的运行结果是1,2,3,4
因为静态局部变量存储在程序静态区当函数退出时静态局部变量不会受到影响

#include <stdio.h>

int fun(void)
{
    static int count = 0;
    count++;
    return count;
}

int main(void)
{
    printf("count = %d\n", fun());
    printf("count = %d\n", fun());
    printf("count = %d\n", fun());
    printf("count = %d\n", fun());

    return 0;
}

四、register属性

  • register关键字指明将局部变量存储于寄存器中- register只是请求寄存器变量,但不一定请求成功 register变量的必须是CPU寄存器可以接受的值不能用&运算符获取register变量的地址

五、extern属性

1.extern用于声明“外部”定义的变量和函数
2.- extern变量在文件的其它地方分配空间
3.- extern函数在文件的其它地方定义

总结

变量都可以拥有自己的属性,当给变量加上不同的属性时,变量的意义也是不同的。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。