变量属性

变量属性

C语言的变量属性

  • C语言中的变量可以有自己的属性
  • 在定义变量的时候加上“属性”关键字
  • 属性关键字指明变量的特有意义

auto关键字

  • auto即C语言中局部变量的默认属性
  • auto表明将被修饰的变量存储在栈上
  • 编译器默认所有的局部变量都是auto的

register关键字

  • register关键字指明局部变量存储在寄存器中
  • register只是请求寄存器变量,但不一定请求成功
  • register变量的必须是CPU寄存器可以接受的值
  • 不能用&运算符获取register变量的地址
#include <stdio.h>
register int g_val ; // error
int main()
{register char var;printf("0x%08x",&var); // errorreturn 0;
}

static关键字

  • static关键字指明变量的“静态”属性
  • static关键同时具有“作用域限定符”的意义
    • static修饰的全局变量作用域只是声明的文件中
    • static修饰的函数作用域只是声明的文件中
#include <stdio.h>
int g_var; // 全局变量,程序的任意地方都能访问
static int g_vs; // 静态全局变量,只有当前文件中可以访问
int main()
{int var;  // 局部变量,在栈上分配空间static int s_var; // 静态局部变量,在静态数据区分配空间return 0;
}

例子:

#include <stdio.h>
int f1()
{int r = 0;r++;return r;
}
int f2()
{static int r = 0;r++;return r;
}
int main(int argc, char const *argv[])
{auto int i = 0;static int k = 0;register int j = 0;printf("%p\n",&i);printf("%p\n",&k);// printf("%p\n",&j); // errorfor(i=0;i<5;i++)printf("%d\n",f1());for(i=0;i<5;i++)printf("%d\n",f2());return 0;
}

结果:
1020750-20161114113348404-691148863.png

extern 关键字

  • extern 用于声明“外部”定义的变量和函数
    • extern 变量在文件的其他地方分配空间
    • extern 函数在文件的其他地方定义
  • extern 用于“告诉”编译器用C语言方式编译
extern "C"
{int f(int a,int b){return a + b;}
}

static 和extern

#include <stdio.h>
extern int g_i;
int main()
{printf("%d\n",g_i);
}
int g_i;

总结:

  • auto变量存储在程序的栈中,默认属性
  • static 变量在程序静态区中
  • register变量请求存储于CPU寄存器中
  • extern变量在文件的其它地方分配空间
  • extern 能够指示编译器按照标准C方式编译程序

转载于:https://www.cnblogs.com/yanyun888/p/6061235.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253994.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF:How to display a Bitmap on Image control

一个Bitmap文件&#xff0c;叫做screenShotFile, 你可以这样显示到Image控件上。 BitmapImage bi new BitmapImage(); bi.BeginInit(); bi.UriSource new Uri(this.screenShotFile, UriKind.Absolute); bi.EndInit(); this.scre…

QT中$$PWD的意思

$$PWD的意思为当前目录 如pro文件中&#xff1a;INCLUDEPATH $$PWD/lib/x64-win64 $$PWD表示的意思就是pro文件所在的目录。

Dubbo 整合 Pinpoint 做分布式服务请求跟踪

2019独角兽企业重金招聘Python工程师标准>>> 在使用Dubbo进行服务化或者整合应用后&#xff0c;假设某个服务后台日志显示有异常&#xff0c;这个服务又被多个应用调用的情况下&#xff0c;我们通常很难判断是哪个应用调用的&#xff0c;问题的起因是什么&#xff0…

Linux 进程详解

Linux内核的七大区间 1.进程管理&#xff08;进程创建&#xff0c;进程的三种状态&#xff0c;进程间的调度&#xff0c;调度算法...&#xff09; 2.内存管理&#xff08;段式管理&#xff08;Linux所有段都从0开始&#xff09;&#xff0c;页式管理--地址偏移量&#xff09; 3…

C#2.0 委托

委托 委托是一个非常不错的设计&#xff0c;允许我们把方法做为参数传递&#xff0c;实现了开放閉放原则。在方法中我们只要有一个委托占位&#xff0c;调用者就可以传入符合签名的方法来做不同的操作&#xff0c;这也面向对象开发中多态的魅力。 但是在C#1.0的时候&#xff…

qt乱码Could not decode“xxx.cpp“ with “UTF-8“-encoding.Editing not possible问题处理

问题描述&#xff1a;如题&#xff1a; 解决方法&#xff1a; 1、点击Select Encoding按钮 2、选择按照系统编码 3、选中System后点击按编码重新载入 4、问题解决

bootargs中的环境变量说明和一些常用的uboot命令

bootargs中的环境变量说明和一些常用的uboot命令 一些常见的uboot命令&#xff1a; Help [command]在屏幕上打印命令的说明 Boom [addr]启动在内存储器的内核 Tftpboot通过tftp启动内核 Saveenv保存环境变量 setenv name [value] 设置环境变量 bootargs中的环境变量 co…

特斯拉自动驾驶系统秘密,来自特斯拉AI总监爆料

据外媒报道&#xff0c;特斯拉汽车公司人工智能&#xff08;AI&#xff09;总监安德烈卡帕西(Andrej Karpathy)日前参加2018年TRAIN AI大会时&#xff0c;剖析了该公司构建自动驾驶仪&#xff08;Autopilot&#xff09;计算机视觉解决方案的方法。据介绍&#xff0c;Autopilot编…

快捷键汇总

navicat 运行选中代码 ctrshiftr navicat 运行所有代码 ctrr 快速显示桌面 wind 转载于:https://www.cnblogs.com/caer/p/6064571.html

js做倒计时

var dinshiqi setInterval(timerun,1000) function timerun(){ //timegundong var now_time new Date(); var hours now_time.getHours(); //时 var minutes now_time.getMinutes(); //分 var seconds now_time.getSeconds(); //秒 //秒钟 show_seconds 59 - parseInt(s…

QT右键点击添加库不响应的解决办法

问题描述 QT在pro右键点击添加库不响应 解决方案 双击打开pro文件 在pro文件界面里单击鼠标右键&#xff0c;并选择添加库。 解决问题

爬取前尘无忧python职位信息并保存到mongo数据库

&#xff11;&#xff0e;re实现 1 import re,os2 import requests3 from requests.exceptions import RequestException4 5 MAX_PAGE 10 #最大页数6 KEYWORD python7 headers {8 User-Agent:9 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, lik…

实验八——函数定义及调用总结

1.本次课学习到的知识点&#xff1a; (1)学习了数字金字塔。pyramid ()函数功能&#xff0c;函数定义时&#xff0c;形参n决定数字金字塔的层数&#xff1b; (2)不返回结果的函数定义&#xff1a; (3)复数运算&#xff1a; c1x1&#xff08;y1) i&#xff0c;c2x2&#xff08;y…

Apache JMeter 记一次使用HTTP工具POST提交JSON数据进行送积分高并发压测(二)

一、前言 前面文章已经介绍Apache JMeter的基本概率和如果使用&#xff0c;但作为一个开发人员&#xff0c;自己写的代码都应该要好好的COD EREVIEW,好好的自测吧。但是有些场景比如高并发、负载和性能测试的时候&#xff0c;不借助工具是不好进行测试的。Jmter工具设计之初是用…

QT pro文件详解

1.QT pro文件配置项说明 注释&#xff1a;注释是从一行的#开始&#xff0c;到这一行的结束。QT &#xff1a;这个是添加QT项目需要的模块的&#xff0c;若项目中要排除某个模块&#xff0c;也可用QT -配置项。TEMPLATE : 这个配置项确定qmake为这个应用程序生成哪种makefile …

可伸缩视频编码svc

可伸缩视频编码&#xff08;Scalable Video Coding, SVC&#xff09;技术把视频信号编码成分层的形式&#xff0c;当带宽不足时只对基本层的码流进行传输和解码&#xff0c;但这时解码的视频质量不高。当带宽慢慢变大时&#xff0c;可以传输和解码增强层的码流来提高视频的解码…

【vim】几种模式的切换

很多初学者启动vim后&#xff0c;不知道怎么输入字符&#xff1a;按了半天字母&#xff0c;结果屏幕还是空的。 vim和记事本或WORD不一样&#xff0c;不是一打开后就可以输入文字&#xff0c;此时它处于正常模式。 vim一共有4个模式&#xff1a; 正常模式 (Normal-mode) 插入模…

数据结构----顺序表与单链表(JAVA)

下面为学习顺序表和单链表的一些基本操作函数&#xff1a; 1 public class SeqList<T> extends Object {2 protected int n;3 protected Object[] element;4 5 public SeqList(int length) {6 this.element new Object[length];7 this.n 0…

SSH初体验系列--Hibernate--1--环境配置及demo

最近在学hibernate,常见的教程都是搭配mysql,因为公司本地电脑用的是pg,所以就尝试着做个pg的小demo. 自己也是边学边写&#xff0c;只当是加深印象.话不多说&#xff0c;直接开始; 一) 准备工作; 1) 本地安装postgresql ,这个不多说&#xff0c;自己去网上下载; 注: 本次使用的…

Qt学习:QAction系列详解

一、QAction类详解 【详细描述】 QAction类提供了抽象的用户界面action&#xff0c;这些action可以被放置在窗口部件中。 应用程序可以通过菜单&#xff0c;工具栏按钮以及键盘快捷键来调用通用的命令。由于用户期望每个命令都能以相同的方式执行&#xff0c;而不管命令所使用的…