中铁集团网站建设,做网站分为哪几个岗位,php建设网站怎么用,高端网站建设熊掌号1.内存分布简略图 2.全局变量和静态变量的区别
(1)局部静态变量#xff1a;存储在数据段中#xff0c;局部静态变量的作用域在当前函数中#xff0c;出了函数就不能使用该变量#xff0c;但局部静态变量的生命周期是在整个程序间#xff0c;局部静态变量要运行到这一行才…1.内存分布简略图 2.全局变量和静态变量的区别
(1)局部静态变量存储在数据段中局部静态变量的作用域在当前函数中出了函数就不能使用该变量但局部静态变量的生命周期是在整个程序间局部静态变量要运行到这一行才能初始化。
void Test()
{static int staticvar 1;//该静态成员变量是存储在数据段(静态区)它要运行到这里才初始化它的作用域在Test函数中使用
}
(2)全局变量存储在数据段中全局变量作用域在整个程序中无论程序中那个函数都可以使用该变量生命周期也是整个程序间在main之前就初始化在整个文件都可以链接。
int globalvar1;//存储在数据段(静态区)main函数之前就初始化在哪里都能初始化作用域是全局的(所有文件都可见)
void Test()
{static int staticvar 1;
}
(3)全局静态变量全局静态变量和全局变量差不多它们唯一的区别是链接属性的不同全局变量在整个文件都可见全局静态变量只能在当前文件中可见。 static int staticvar 1;//存储在数据段(静态区)main函数之前就初始化在哪里都能初始化作用域是全局的(当前文件可见)
void Test()
{static int staticvar 1;
}
3.sizeof 和 strlen 区别
sizeof:求的是所占整个空间的大小(字符串包括\0)
strlen:求的是字符串的大小(不包括\0)
4.练习
感兴趣的看官可以看看下面的代码看看下面的代码结果是什么
int globalVar 1;
static int staticGlobalVar 1;
void Test()
{static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] abcd;const char* pChar3 abcd;int* ptr1 (int*)malloc(sizeof(int) * 4);int* ptr2 (int*)calloc(4, sizeof(int));int* ptr3 (int*)realloc(ptr2, sizeof(int) * 4);free(ptr1);free(ptr3);
}
globalVar在哪里_数据段___ staticGlobalVar在哪里__数据段__staticVar在哪里__数据段__ localVar在哪里__栈__num1 在哪里_栈__char2在哪里_栈___ *char2在哪里_栈__//*char2是首元素的解引用pChar3在哪里__栈_ *pChar3在哪里_代码段___ptr1在哪里__栈__ *ptr1在哪里__堆__
sizeof(num1)__40___;sizeof(char2) __5__; strlen(char2) _4___;sizeof(pChar3) __4/8__; strlen(pChar3) __4__;sizeof(ptr1) __4/8__;