C语言中,局部变量、全局变量、静态变量、堆、栈的内存地址
2013-02-01 22:04
316 查看
#include <stdio.h> #include <string.h> #include <stdlib.h> void before() { } char g_buf[16]; char g_buf2[16]; char g_buf3[16]; char g_buf4[16]; char g_i_buf[]="123"; char g_i_buf2[]="123"; char g_i_buf3[]="123"; void after() { } int main(int argc, char **argv) { char l_buf[16]; char l_buf2[16]; char l_buf3[16]; static char s_buf[16]; static char s_buf2[16]; static char s_buf3[16]; char *p_buf; char *p_buf2; char *p_buf3; p_buf = (char *)malloc(sizeof(char) * 16); p_buf2 = (char *)malloc(sizeof(char) * 16); p_buf3 = (char *)malloc(sizeof(char) * 16); printf("g_buf: 0x%x\n", g_buf); printf("g_buf2: 0x%x\n", g_buf2); printf("g_buf3: 0x%x\n", g_buf3); printf("g_buf4: 0x%x\n", g_buf4); printf("g_i_buf: 0x%x\n", g_i_buf); printf("g_i_buf2: 0x%x\n", g_i_buf2); printf("g_i_buf3: 0x%x\n", g_i_buf3); printf("l_buf: 0x%x\n", l_buf); printf("l_buf2: 0x%x\n", l_buf2); printf("l_buf3: 0x%x\n", l_buf3); printf("s_buf: 0x%x\n", s_buf); printf("s_buf2: 0x%x\n", s_buf2); printf("s_buf3: 0x%x\n", s_buf3); printf("p_buf: 0x%x\n", p_buf); printf("p_buf2: 0x%x\n", p_buf2); printf("p_buf3: 0x%x\n", p_buf3); printf("before: 0x%x\n", before); printf("after: 0x%x\n", after); printf("main: 0x%x\n", main); if (argc > 1) { strcpy(l_buf, argv[1]); } return 0; }
源代码如上,结果如下
g_buf: 0x80499c8 g_buf2: 0x80499a8 g_buf3: 0x80499d8 g_buf4: 0x80499b8 g_i_buf: 0x8049964 g_i_buf2: 0x8049968 g_i_buf3: 0x804996c l_buf: 0xbffff6f8 l_buf2: 0xbffff6e8 l_buf3: 0xbffff6d8 s_buf: 0x8049998 s_buf2: 0x8049988 s_buf3: 0x8049978 p_buf: 0x804a008 p_buf2: 0x804a020 p_buf3: 0x804a038 before: 0x8048424 after: 0x8048429 main: 0x804842e
可以看到,从低地址到高地址,如图:
![](http://img.my.csdn.net/uploads/201302/01/1359727784_3488.jpg)
相关文章推荐
- 面试总结之C语言的静态变量、全局变量、局部变量
- C语言那年踩过的坑--局部变量,静态变量,全局变量在内存中存放的位置
- C语言中全局变量、全局静态变量、局部变量、局部静态变量
- 【C语言】局部变量、全局变量,局部静态变量,全局静态变量,extern,static的区别
- C语言 静态变量、全局变量、局部变量、指针变量 地址
- 【C语言】局部变量、全局变量,局部静态变量,全局静态变量,extern,static的区别
- c语言全局变量和局部变量问题汇总
- Java基础(五)---局部变量、全局变量、静态变量、final变量、静态常量、静态方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- 全局变量,局部变量,静态变量-3
- C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别
- 变量的属性(全局变量、局部变量、动态变量、静态变量等)
- C语言 全局变量和局部变量的大小限制
- c语言中static的用法,包括全局变量和局部变量用static修饰
- 静态变量,全局变量,局部变量的区别
- linux进程的堆栈空间_代码段(指令,只读)、数据段(静态变量,全局变量)、堆栈段(局部变量)、栈【转】
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- 类变量、成员变量、实例变量、局部变量、静态变量、全局变量 的解释。
- C语言 全局变量和局部变量的大小限制
- c++中全局变量,全局静态变量,局部静态变量,局部变量的作用域和生命周期