b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

c 计算结构体大小 C语言学习入门(9)

电脑杂谈  发布时间:2017-12-25 13:05:49  来源:网络整理

只有自动变量才可以是寄存器变量,全局变量和静态局部变量不行

寄存器变量只限于int、char和指针类型变量使用

extern与函数

外部函数:如果在当前文件中定义的函数允许其他文件访问、调用,就称为外部函数。C语言规定,不允许有同名的外部函数。

内部函数:如果在当前文件中定义的函数不允许其他文件访问、调用,只能在内部使用,就称为内部函数。

C语言规定不同的源文件可以有同名的内部函数,并且互不干扰。

> extern修饰的函数就是外部函数,默认情况下,所有的函数就是外部函数 extern void one(); int two();

> 你想要把其他源文件中定义的外部函数拿过来声明,完整的做法,应该使用extern关键字,表示引用别人的”外部函数”:

extern void one();//需要 在 main() 之前引入, 这里的extern 也可以省略

static与函数

在定义函数时,在函数的最左边加上static可以把该函数声明为内部函数(又叫静态函数),

这样该函数就只能在其定义所在的文件中使用。如果在不同的文件中有同名的内部函数,则互不干扰。

extern与全局变量

> 默认情况下,一个函数不可以访问在它后面定义的全局变量,若要使它可以访问 则:

extern int a;//extern是用来声明一个已经定义过的变量

void cc() { a = 7; }

int a = 9;

> 声明多个 相同的全局变量 ,表示的是同一个变量 如:

int a;

main() {};

int a;

int a;

> 在局部变量前 加extern

int a;

main()

{

extern int a; //这还是全局变量那个 a

//int a; 这是局部变量

}

> 假如在多个源文件中都有全局变量int a;,那么这些源文件的所有全局变量int a;都代表着同一个变量

使用方法 1: 1.c int a 2.c int a

2: 1.c int a 2.c extern int a

3: 1.c extern int a 2.c int a

4: 1.c extern int a 2.c extern int a 这是错的,都声明,没有定义

static与全局变量

如果在定义全局变量的时候加上static关键字,此时static的作用在于限制该全局变量的作用域,

只能在定义该全局变量的文件中才能使用,跟其他源文件中的同名变量互不干扰

结构体

它允许内部的元素是不同类型的

结构体的定义

//结构体类型:

structPerson

{

charname[20]; //char *name;

intage;

floatweight;

};

//定义一个结构体变量,定义变量时才分配存储空间

structPersonperson; //与类型定义一起使用

structStudent {//结构体类型与变量同时定义

char*name;

intage;

} stu;

struct{//省略类型,结构体变量名为stu

char*name;

intage;

} stu;

结构体的注意点

1.不允许对结构体本身递归定义

如下做法是错误的,注意第3行

1structStudent {

2 intage;

3 structStudent stu;

4};

2.结构体内可以包含别的结构体

3.结构体变量占用的内存空间是其成员所占内存之和,而且各成员在内存中按定义的顺序依次排列

结构体的初始化


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-55787-9.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...