您的位置:首页 > 编程语言 > C语言/C++

C语言零碎知识点总结(结构体)

2016-11-14 15:57 295 查看
关于变量的含义:变量可以看成一段人文化的内存空间,a = 10是将10赋值给了a所代表的内存空间。

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: