在函数中定义的变量称为自动局部变量。因为每次调用该函数时,它们都自动“创建”,并且它们的只对于函数来说是局部的,局部对象的变量都会默认为空。局部变量的值只能在定义该变量的函数中访问,不能从函数之外访问。

静态局部变量用关键字static声明,它们的值在函数调用的过程中保留下来,并且初始默认为0.在变量声明前加上关键字static,可以使局部变量保留多次调用一个方法所得的值。

结构体可以看作是轻量型的对象。

在自己看来的一个程序,在系统开来只是一个函数,所以称为main函数,它唯一与众不同之处在于它的名字很特别:它指明了程序开始执行的位置。事实上,main函数是在程序开始执行时,由运行时系统调用,就像在自己的程序中调用函数一样。当main执行完毕后,控制权返回给运行时系统,这样系统便知道程序已经执行完毕了。当运行时系统调用main函数时,系统向该函数传递两个参数。第一个参数按照规定称为argc,是一个整型值,它指明了从命令行输入的参数个数。第二个传递给main的参数时一个字符指针数组,按照规定称为argv。另外,这个数组中包含argc+1个字符指针。该数组的第一个元素是执行程序的名称指针,如果你的系统中没有程序名称,则是空串。数组的其他项指向由启动程序执行的命令行所指定的值。数组argv中的最后一个指针argv[argc]规定为空。

命令行参数,在终端向main函数传递参数,第一个参数为程序名称,其后的参数就是你向传递给main函数的参数值。

从整个观念看来,每个大括号都是一个域,域内的变量对外都是不可见的,域外的变量对域内是可见的。

系统就好比是一个死循环的函数,从开机就开始循环运行,每个应用程序在系统开来只不过是一个名字为main的函数而已,当你点击程序,系统调用,当你结束程序,程序返回。从上看到下,每个库仅仅是事先写好的代码,当你引用只不过是复制过来,这样节省了编程者的时间,增加了编程的效率。每个函数方法对于他就是做一件事情,所需的参数就是他做这个事情需要的条件,你拿给他,调用他,他就给你返回你需要的结果。

所谓的全局变量,因为你是放在程序大括号外面,所以你对于其他的域都是可见的,这就是所谓的全局变量。局部变量在大括号之内的的变量对于这个域就是局部变量。只在这个域内存在可见。静态,就是说这个变量可以记忆所有操作后的结果。

局部变量、结构体和main函数的更多相关文章

  1. C语言结构体中的函数指针

      这篇文章简单的叙述一下函数指针在结构体中的应用,为后面的一系列文章打下基础 本文地址:http://www.cnblogs.com/archimedes/p/function-pointer-in ...

  2. c语言,结构体里面的函数

    以linux-3.2内核代码为例,结构体里面的函数的用法: 例,在某驱动文件中,定义了一个平台设备驱动: static struct platform_driver s3c24xx_led_drive ...

  3. [编程] C语言结构体指针作为函数参数

    结构体指针作为函数参数:结构体变量名代表的是整个集合本身,作为函数参数时传递的整个集合,也就是所有成员,而不是像数组一样被编译器转换成一个指针.如果结构体成员较多,尤其是成员为数组时,传送的时间和空间 ...

  4. C++ 利用指针和数组以及指针和结构体实现一个函数返回多个值

    C++ 利用指针和数组实现一个函数返回多个值demo1 #include <iostream> using namespace std; int* test(int,int,int); i ...

  5. enginefuncs_t 结构体中的函数

    就是常见的 g_engfuncs 中的函数.AMXX 里就是 fakemeta 的 EngFunc_** // 这些函数由引擎提供给EXTDLL使用.mp.dll hl.dll ... typedef ...

  6. go结构体上的函数

    go结构体上的函数 我们可以将一个方法和一个结构体关联: type Saiyan struct { Name string Power int } func (s *Saiyan) Super() { ...

  7. 函数定义从零开始学C++之从C到C++(一):const与#define、结构体对齐、函数重载name mangling、new/delete 等

    今天一直在学习函数定义之类的问题,下午正好有机会和大家共享一下. 一.bool 类型 逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC+ ...

  8. const与#define、结构体对齐、函数重载name mangling、new/delete 等

    一.bool 类型 逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC++中为1个字节. 声明方式:bool result; result ...

  9. c语言里用结构体和指针函数实现面向对象思想

    一.基础研究 观察如下两个程序a.c和b.c: A.c: B.c: 这两个程序都是要实现在屏幕上第10行40列打印一个绿色的字符c: 这两个程序的数据组织方式是一样的,都是使用结构体,而且对共性和个性 ...

随机推荐

  1. Xamarin如何生成Android项目的APK

    Xamarin如何生成Android项目的APK 首先需要选择Release模式生成项目.然后从“生成”菜单中选择Export Android Package命令,就可以导出APK包.APK保存在An ...

  2. 逆序数 POJ 2299 Ultra-QuickSort

    题目传送门 /* 题意:就是要求冒泡排序的交换次数. 逆序数:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序. 一个排列中逆序的总数就称为这个排列的逆 ...

  3. css构造块级元素

    css 1. 宽高width:数值;height:数值;也可用百分比!长高的设置不会被后代继承2. 背景(1)背景颜色background-color:颜色值;元素的背景颜色默认为transparen ...

  4. LightOJ1032 Fast Bit Calculations(数位DP)

    显然数位DP. dp[i][j]表示所有末尾为j的i位二进制数相邻位的数量和 初始状态dp[2][1]=1 从长度i-1转移到长度i就是在i-1位的末尾添上0或1,转移方程就是: dp[i][0]=d ...

  5. BZOJ3746 : [POI2015]Czarnoksiężnicy okrągłego stołu

    NOIP前做了几道POI,现在终于能在BZOJ上提交了… 交上去最后几个点WA,看了数据发现p=0的特判错了… p=0,1时特判 p=2时构造两种情况判断 p=3时不考虑1的座位进行DP 可以发现对于 ...

  6. 在本地(Eclipse)运行第一个strom-starter例子

    一.在Eclipse中建立storm项目: 具体步骤如下: 1.在Eclipse中新建java project项目并导入jar包: File-> New -> Java Project - ...

  7. [Cocos2d-x For WP8]Hello world

    [Cocos2d-x For WP8]Hello world Cocos2d-x For WP8使用C++开发,使用cocos2d-xv0.13同样的接口,Cocos2d-x For WP8的相关项目 ...

  8. COJ980 WZJ的数据结构(负二十)

    试题描述 在Bytemountains有N座山峰,每座山峰有他的高度h_i.有些山峰之间有双向道路相连,共M条路径,每条路径有一个困难值,这个值越大表示越难走,现在有Q组询问,每组询问询问从点v开始只 ...

  9. Eclipse开发JavaWeb程序报Server Tomcat v7.0 at localhost was unable to start

    出处:http://www.javaweb1024.com/info/582.jspx 原因重现: Eclipse开发JavaWeb程序,启动Servers的Tomcat服务器,突然跳出弹出框,内容显 ...

  10. ueditor使用总结——前端篇.md

    首先吐槽下,百度的API太坑,谁让人家都是大牛呢. 说明:本文所涉猎代码均依托于seajs,本文所用ueditor版本为1.4.3.3 JSP UTF-8版 编辑器前端部署: 1.把ueditor引入 ...