局部变量、结构体和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: 这两个程序的数据组织方式是一样的,都是使用结构体,而且对共性和个性 ...
随机推荐
- 字符编码GB2312、GBK、UTF-8的区别
本文来自:javaeye网站 UTF8是国际编码,它的通用性比较好,外国人也可以浏览论坛 GBK是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBK大~ 提示:如果您的网站客户群体主要是面 ...
- mysql之对表的操作
1. 表的基本概念 在数据库中,表是一种非常重要的数据库对象,是组成数据库的基本对象,由若干个字段组成,主要用来储存数据记录. 表中的数据库对象包含列,索引和触发器. 列:也称属性列,在具体创建表时必 ...
- BZOJ4311 : 向量
考虑离线操作,求出每个向量存在的时间区间,用时间线段树来进行分治,在每个节点求出凸壳后,询问时在凸壳上三分答案.时间复杂度$O(n\log^2n)$. #include<cstdio> # ...
- BZOJ3658 : Jabberwocky
考虑将某线段下方的点取走: 将所有点从低到高排序 每扫描到一条水平线,对于上面每个点,找到它下面同色的前驱后继,统计中间点的个数 然后再把线上所有点插入数据结构中 最后再统计相邻的同色的点之间的点个数 ...
- BZOJ3808 : Neerc2012 Labyrinth of the Minotaur
左上角和右下角不四连通等价于左下角和右上角八连通 枚举正方形的左上角,先二分出最大的边长,使得里面不含障碍物 然后再二分出最小的边长,使得两部分连通,用前缀和判断 这题WA了好久…一直对拍都没问题…于 ...
- c# 纯代码方式创建快捷方式
using System; using System.Collections.Generic; using System.Text; using Microsoft.Win32; using Syst ...
- TextBlock 格式化内容
Text="{Binding ContentName,StringFormat=分享好书\{0\}}"
- Uiautomator打包使用第三方库,报错的解决方案
问题引源: 在做自动化过程中,想在用例执行完毕后,自动生成该用例测试报告: 报告定义为Excel格式文件,且在用例执行过程中生成. 所以我在Uiautomator工程中引用了jxl.jar,用以处理E ...
- Google Code Jam 2010 Round 1B Problem A. File Fix-it
https://code.google.com/codejam/contest/635101/dashboard#s=p0 Problem On Unix computers, data is s ...
- c#操作excel后关闭excel.exe的方法
关闭进程 C#和Asp.net下excel进程一被打开,有时就无法关闭, 尤其是website.对关闭该进程有过GC.release等方法,但这些方法并不是在所有情况下均适用. 于是提出了kil ...