变量
/*
1、extern char D; 只是简单的声明一个变量的类型,没有定义变量 D(也就是没有给D分配内存地址)
,使用变量 D 之前需要先定义 char D;
2、char D; 声明并定义一个 char 类型的变量 D,
3、定义一个变量之后,就会为该变量分配内存空间,但是Value没有值。
*/
extern char D;
int main(int argc, const char * argv[]) {
char A, B, C;
char D = 'd';
printf("地址:A= %p, B= %p, C= %p, D= %p \n", &A, &B, &C, &D);
printf("value:A= %d, B= %d, C= %d \n", A, B, C);
A = 'a';
B = 'b';
C = 'c';
printf("地址:A= %p, B= %p, C= %p, D= %p \n", &A, &B, &C, &D);
printf("value:A= %d, B= %d, C= %d \n", A, B, C);
return 0;
}
屏幕快照 2017-08-31 下午5.34.52.png
存储类
- auto 局部变量的默认存储类,只能用来修饰局部变量
{
int mount;
auto int month;
}
- static 全局变量的默认存储类,作用域在申明变量所在的文件内。
static int Count;
int Road;
main()
{
printf("%d\n", Count);
printf("%d\n", Road);
}
- register 所修饰的变量在寄存器内,没有内存地址,变量的最大长度为寄存器的大小
{
register int miles;
}
- extern 在全局申明一个变量的引用,申明该变量或者函数在项目其他文件中已经定义了。
//main.c文件
#include <stdio.h>
int count ;
extern void write_extern();
main()
{
count = 5;
write_extern();
}
//support.c文件
#include <stdio.h>
extern int count;
void write_extern(void)
{
printf("count is %d\n", count);
}
// 输出
count is 5
共用体
//共用体 Data
union Data
{
int i;
float f;
char str[20];
};
int main( )
{
union Data data;
data.i = 10;
printf( "data.i : %d\n", data.i);
data.f = 220.5;
printf( "data.f : %f\n", data.f);
strcpy( data.str, "C Programming");
printf( "data.str : %s\n", data.str);
printf( "**********************\n");
printf( "data.i : %d\n", data.i);
printf( "data.f : %f\n", data.f);
printf( "data.str : %s\n", data.str);
return 0;
}
- 只能给共用体其中一个元素赋值
- 共用体的大小为其中最长元素的大小
- 共用体一般用于不确定类型,可以达到节约内存空间的目的。
网友评论