当前位置: 首页 > news >正文

武汉网站建设的/爱站小工具

武汉网站建设的,爱站小工具,商务定制网站,wordpress 站内搜索 慢C语言中的变量可以有自己的属性,只需在定义变量的时候加上“属性”关键字即可。 “属性”关键字指明变量的特有属性。 1、auto关键字: auto是C语言中局部变量的默认属性,表明被修饰的变量存储在栈上。 编译器默认所有的局部变量都是auto属性。…

C语言中的变量可以有自己的属性,只需在定义变量的时候加上“属性”关键字即可。

“属性”关键字指明变量的特有属性。

1、auto关键字:

auto是C语言中局部变量的默认属性,表明被修饰的变量存储在栈上。

编译器默认所有的局部变量都是auto属性。

2、register关键字:

表明局部变量存储在寄存器中,要注意的是,这只是请求寄存器变量,但是不一定成功。register变量必须是CPU寄存器可以接受的值。

不能用“&”运算符获取register变量的地址。

观察下面代码

#include <stdio.h>register int g_v;  //errorint main()
{register char var;printf("%ox08X", &var);  //errorreturn 0;
}

linux下使用Gcc进行编译:

delphi@delphi-vm:~/will$ gcc test.c
test.c: In function ‘main’:
test.c:10: error: address of register variable ‘var’ requested

3、static关键字

static关键字表明变量的“静态”属性:

            static修饰的局部变量存储在程序静态区;

static关键字具有“作用域限定符”的意义:

            static修饰的全局变量作用域只是在声明的文件中

            static修饰函数作用域只在声明的文件中

#include<stdio.h>int g_v;  //全局变量 程序的任意地方都可以访问static int g_vs; //静态全局变量,只有当前文件中可以访问int main()
{int var;  //局部变量,在栈上分配空间static int svar; //静态局部变量,在静态存储区分配空间return 0;
}

示例代码:观察下面代码,判断输出,并体会auto、register、static关键字的作用

#include <stdio.h>int f1()
{int i=0;i++;return i;
}int f2()
{static i=0;i++;return i;
}int main()
{auto int i=0;  //栈上register int j=0;  //向编译器申请将j存储在寄存器中static int k=0;  //静态数据区,作用域在mian中printf("%p\n", &i);//printf("%p\n", &j);   //errorprintf("%p\n", &k);for(i=0; i<5; i++)  //C99不允许声明的时候定义在循环中{printf("%d\n", f1());}for(i=0; i<5; i++){printf("%d\n", f2());}return 0;
}

在Linux下使用gcc进行编译并运行,结果如下:

delphi@delphi-vm:~/will$ gcc test.c
delphi@delphi-vm:~/will$ ./a.out
0xbfc222ec
0x804a01c
1
1
1
1
1
1
2
3
4
5

4、extern关键字

extern用于声明“外部”定义的变量和函数

            extern变量在文件的其他地方分配空间;

            extern函数在文件的其他地方定义。

extern用于“告诉”编译器使用C的方式编译代码:

            C++编译器和一些变种C编译器默认会按照“自己”的方式编译函数和变量。

示例:

extern "C"  //C++和C的桥梁
{int f(int a, int b){return a+b;}
}

观察下面代码,体会extern的作用,注意static全局变量和extern的“互斥性”

#include<stdio.h>   //test.cextern int g_i;int mian()
{printf("%d\n", g_i);return 0;
}
g.c:
int g_i=10;  //gcc test.c g.cstatic g_i=10; //编译错误,static作用域缩小static和extern“互斥性”;

那么如何访问其他文件中的static全局变量呢?——定义函数

g.c:int getI()
{return g_i;
}在main()中
extern int getI();

小结:

auto变量存储在程序的栈上,并且是默认属性;

static局部变量存储在程序的静态区,修饰的全局变量(函数)只能在声明的文件中访问(作用域限定)。

register变量请求存储于CPU寄存器中,访问速度快;

extern变量在文件的其他地方分配空间;

extern能够指示编译器按照标准C方式进行编译。


http://www.jmfq.cn/news/5121181.html

相关文章:

  • 怎么做淘客网站/互联网营销模式
  • 网站做seo需要大量文章/武汉seo人才
  • 扬州工程建设招标网/上海优化外包
  • 网站建设公司有多少钱/搜索引擎优化方法案例
  • 站长查询seo是什么意思/免费b站软件下载
  • 做网站的公司都有哪些/百度收录关键词
  • 海宁高端网站设计/营销战略
  • 优惠券精选网站怎么做/做seo必须有网站吗
  • 做兼职推荐网站/html网页制作动态效果
  • 个人网站备案能做什么内容/今日刚刚发生的新闻
  • 做交友网站的前景/怎么做网站排名
  • 电脑哪里做ppt下载网站/免费网站或软件
  • 新闻网站跟贴怎么做/广告投放价目表
  • 400选号网站源码/网络兼职平台
  • 百度霸屏培训/优化排名
  • 教你做网站的视频/账户竞价托管费用
  • 软件公司网站设计/前端性能优化有哪些方法
  • 企业管理咨询网站模板/seo收费低
  • 新网站如何做推广软文/长沙网站优化
  • 营销型网站建设方法/凡科网免费建站官网
  • 五华县建设局网站/百度网盟推广
  • 自己的电脑做服务区 网站/教育培训机构
  • 网站做移动适配以后可以取消吗/产品网络营销
  • 如何自己创建网站/seo怎么才能做好
  • 国外比较好的建筑设计网站/2021年度关键词有哪些
  • 做任务领佣金的网站/优化网站的目的
  • 找做网站的人/东莞营销网站建设推广
  • 网站开发与建设会计分录/谷歌关键词搜索工具
  • 投诉举报网站建设方案/营销推广案例
  • 网络营销又可以称为/网站建设方案优化