局部变量、结构体和main函数
在函数中定义的变量称为自动局部变量。因为每次调用该函数时,它们都自动“创建”,并且它们的只对于函数来说是局部的,局部对象的变量都会默认为空。局部变量的值只能在定义该变量的函数中访问,不能从函数之外访问。
静态局部变量用关键字static声明,它们的值在函数调用的过程中保留下来,并且初始默认为0.在变量声明前加上关键字static,可以使局部变量保留多次调用一个方法所得的值。
结构体可以看作是轻量型的对象。
在自己看来的一个程序,在系统开来只是一个函数,所以称为main函数,它唯一与众不同之处在于它的名字很特别:它指明了程序开始执行的位置。事实上,main函数是在程序开始执行时,由运行时系统调用,就像在自己的程序中调用函数一样。当main执行完毕后,控制权返回给运行时系统,这样系统便知道程序已经执行完毕了。当运行时系统调用main函数时,系统向该函数传递两个参数。第一个参数按照规定称为argc,是一个整型值,它指明了从命令行输入的参数个数。第二个传递给main的参数时一个字符指针数组,按照规定称为argv。另外,这个数组中包含argc+1个字符指针。该数组的第一个元素是执行程序的名称指针,如果你的系统中没有程序名称,则是空串。数组的其他项指向由启动程序执行的命令行所指定的值。数组argv中的最后一个指针argv[argc]规定为空。
命令行参数,在终端向main函数传递参数,第一个参数为程序名称,其后的参数就是你向传递给main函数的参数值。
从整个观念看来,每个大括号都是一个域,域内的变量对外都是不可见的,域外的变量对域内是可见的。
系统就好比是一个死循环的函数,从开机就开始循环运行,每个应用程序在系统开来只不过是一个名字为main的函数而已,当你点击程序,系统调用,当你结束程序,程序返回。从上看到下,每个库仅仅是事先写好的代码,当你引用只不过是复制过来,这样节省了编程者的时间,增加了编程的效率。每个函数方法对于他就是做一件事情,所需的参数就是他做这个事情需要的条件,你拿给他,调用他,他就给你返回你需要的结果。
所谓的全局变量,因为你是放在程序大括号外面,所以你对于其他的域都是可见的,这就是所谓的全局变量。局部变量在大括号之内的的变量对于这个域就是局部变量。只在这个域内存在可见。静态,就是说这个变量可以记忆所有操作后的结果。
局部变量、结构体和main函数的更多相关文章
- C语言结构体中的函数指针
这篇文章简单的叙述一下函数指针在结构体中的应用,为后面的一系列文章打下基础 本文地址:http://www.cnblogs.com/archimedes/p/function-pointer-in ...
- c语言,结构体里面的函数
以linux-3.2内核代码为例,结构体里面的函数的用法: 例,在某驱动文件中,定义了一个平台设备驱动: static struct platform_driver s3c24xx_led_drive ...
- [编程] C语言结构体指针作为函数参数
结构体指针作为函数参数:结构体变量名代表的是整个集合本身,作为函数参数时传递的整个集合,也就是所有成员,而不是像数组一样被编译器转换成一个指针.如果结构体成员较多,尤其是成员为数组时,传送的时间和空间 ...
- C++ 利用指针和数组以及指针和结构体实现一个函数返回多个值
C++ 利用指针和数组实现一个函数返回多个值demo1 #include <iostream> using namespace std; int* test(int,int,int); i ...
- enginefuncs_t 结构体中的函数
就是常见的 g_engfuncs 中的函数.AMXX 里就是 fakemeta 的 EngFunc_** // 这些函数由引擎提供给EXTDLL使用.mp.dll hl.dll ... typedef ...
- go结构体上的函数
go结构体上的函数 我们可以将一个方法和一个结构体关联: type Saiyan struct { Name string Power int } func (s *Saiyan) Super() { ...
- 函数定义从零开始学C++之从C到C++(一):const与#define、结构体对齐、函数重载name mangling、new/delete 等
今天一直在学习函数定义之类的问题,下午正好有机会和大家共享一下. 一.bool 类型 逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC+ ...
- const与#define、结构体对齐、函数重载name mangling、new/delete 等
一.bool 类型 逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC++中为1个字节. 声明方式:bool result; result ...
- c语言里用结构体和指针函数实现面向对象思想
一.基础研究 观察如下两个程序a.c和b.c: A.c: B.c: 这两个程序都是要实现在屏幕上第10行40列打印一个绿色的字符c: 这两个程序的数据组织方式是一样的,都是使用结构体,而且对共性和个性 ...
随机推荐
- mysql数据库版本引发的问题
改前: 改后:
- 关于LR中的EXTRARES
LoadRunner脚本之EXTRARES参数 EXTRARES:分隔符,表示标记下一个属性是资源属性的列表(list of resource attributes). [EXTRARES后的资源是由 ...
- SPEL语言-Spring Expression Language
Spring表达式语言全称为"Spring Expression Language",缩写为"SpEL",类似于Struts 2x中使用的OGNL表达式语言,能 ...
- 使用“Empty 模式”改进 Null Object
概述 Null Object 是Martin 大师提出的一种重构手段,其思想就是通过多态(派生一个Null对象)来减少逻辑(if … then …else)的判断. 而.NET中已经有Null Obj ...
- java中的String设计原理
首先,必须强调一点:String Pool不是在堆区,也不是在栈区,而是存在于方法区(Method Area) 解析: String Pool是常量池(Constant Pool)中的一块. 我们知 ...
- unity 翻牌游戏(全都是gui)
;//列数 ;//行数 ;//所有卡片的数量 var matchesNeededToWin:int = totalCards*0.5;//最大匹配数,用来判断游戏是否胜利 ; ; ; var aCar ...
- 命令模式坚决svn树冲突(local unversioned, incoming add upon update)
当工作目录修改删除过时更新使用svn更新就容易发生树冲突“Tree Confilict”.会出现类似提示. local unversioned, incoming add upon update 如果 ...
- [Cocos2d-x For WP8]EaseActions缓动动作
我们用Silverlight框架开发WP8的应用程序的时,编写动画可以使用缓动效果来实现缓动动画对吧,那么在Cocos2d-x框架里面我们一样是可以缓动动作(缓动动画),其实技术的东西都是想通的,如果 ...
- 【POJ】A New Stone Game(博弈论)
http://poj.org/problem?id=1740 题目大意就是,对于n堆石子,每堆若干个,两人轮流操作,每次操作分两步,第一步从某堆中去掉至少一个,第二步(可省略)把该堆剩余石子的一部分分 ...
- 清除 WD MyCloud 自动生成的 .wdmc 目录
1. 先 SSH,停止相应服务 /etc/init.d/wdmcserverd stop/etc/init.d/wdphotodbmergerd stop 2. 禁止服务自启动 update-rc.d ...