C语言零碎知识点总结(结构体)
2016-11-14 15:57
295 查看
关于变量的含义:变量可以看成一段人文化的内存空间,a = 10是将10赋值给了a所代表的内存空间。
sizeof()是一个关键字,计算一个变量或类型所占的内存空间,计算栈上的内存空间。
上述a的值是0,因为它不包含任何类型。
在结构体里面不能对数据进行初始化,例如
结构体在没有实例化的时候只是一个概念,相当于一个类型(int 等),在内存中不占有空间,所以不能进行赋值操作。
在结构体中不能使用static关键字定义变量,但是可以使用conststruct Node{
const int d;//正确
static int d;//错误
}Node;关键字解释:
const修饰一个变量,表示该变量只具有可读属性,不可写。
static的解释:
static修饰全局变量:
一个进程中的内存分配示意图:
其中.txt存放要执行的二进制文件,.data存放已经初始化的全局变量,.bss存放没有初始化的全局变量。这两个地方存放的数据是和进程同生命周期的,在全局变量前加上关键字static修饰,称为静态全局变量,也是存放在上述两个内存段中,只是它具有了局域的特性,只在定义他的源文件中有效,其他源文件无法访问它,只有在定义它的源文件中的变量或者函数使用。
static修饰局部变量:
存放的地址:静态存储区中的.data段中,在定义的同时自动初始化为0
访问权限:静态局部变量的作用域是局部变量的作用域int main()
{
int a = 7;
{
static int a = 10;
a++;
}
printf("%d", a);
return 0;
}这个函数输出结果显而易见是7.。
所以在结构体中不能定义static关键字的变量,因为static初始化时会被自动赋值为0,有一点类似于全局变量。
a21c
sizeof()是一个关键字,计算一个变量或类型所占的内存空间,计算栈上的内存空间。
struct Node{ }; int a = sizeof(struct Node);
上述a的值是0,因为它不包含任何类型。
在结构体里面不能对数据进行初始化,例如
struct Node{ int a = 10; };
结构体在没有实例化的时候只是一个概念,相当于一个类型(int 等),在内存中不占有空间,所以不能进行赋值操作。
在结构体中不能使用static关键字定义变量,但是可以使用conststruct Node{
const int d;//正确
static int d;//错误
}Node;关键字解释:
const修饰一个变量,表示该变量只具有可读属性,不可写。
static的解释:
static修饰全局变量:
一个进程中的内存分配示意图:
其中.txt存放要执行的二进制文件,.data存放已经初始化的全局变量,.bss存放没有初始化的全局变量。这两个地方存放的数据是和进程同生命周期的,在全局变量前加上关键字static修饰,称为静态全局变量,也是存放在上述两个内存段中,只是它具有了局域的特性,只在定义他的源文件中有效,其他源文件无法访问它,只有在定义它的源文件中的变量或者函数使用。
static修饰局部变量:
存放的地址:静态存储区中的.data段中,在定义的同时自动初始化为0
访问权限:静态局部变量的作用域是局部变量的作用域int main()
{
int a = 7;
{
static int a = 10;
a++;
}
printf("%d", a);
return 0;
}这个函数输出结果显而易见是7.。
所以在结构体中不能定义static关键字的变量,因为static初始化时会被自动赋值为0,有一点类似于全局变量。
a21c
相关文章推荐
- C语言 ---- 函数 结构体 iOS学习-----细碎知识点总结
- C语言零碎知识点总结(数组和函数返回值)
- 【C语言零碎知识点】变量的存储类型
- C语言的指针、数据、结构体关系总结
- 关于C语言字节对齐之结构体 共用体占用字节数的快速计算方法总结
- C语言之知识点总结——const指针
- C语言结构体总结
- C语言结构体部分--知识点及试题
- c++学习总结(一些零碎的小知识点)
- C语言中的几个容易混淆的知识点总结
- C语言之总结篇——04——结构体
- Linq to sql与EF零碎知识点总结
- C语言的指针、数据、结构体关系总结
- C语言知识点总结
- 在这里记录自己学习中遇到的零碎的容易忽略的知识点,不定时总结更新
- c 语言零碎知识点总结
- 数组结构体总结(C语言)
- ARM零碎知识点总结
- c语言学习零碎整理(2):结构体对齐问题
- iOS -C语言day01知识点总结