码迷,mamicode.com
首页 > 编程语言 > 详细

【学习笔记】【C语言】变量的内存分析

时间:2015-05-31 19:57:16      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

1. 字节和地址

为了更好地理解变量在内存中的存储细节,先来认识一下内存中的“字节”和“地址”。

1> 内存以“字节为单位”

技术分享

0x表示的是十六进制,不用过于纠结,能看懂这些数字之间谁大谁小就行了

2> 不同类型占用的字节是不一样的,数据越大,所需的字节数就越多

2. 变量的存储

1> 所占用字节数跟类型有关,也跟编译器环境有关

技术分享

2> 变量实例

int b = 10;

int a = 20;

内存由大到小寻址,优先分配内存地址较大的字节给变量。b的内存地址比a大

每个变量都有地址:第一个字节的地址就是变量的地址

技术分享

3> 查看内存地址:

int a;

printf("a的地址是:%p\n", &a);

4> 注意

在变量未经初始化之前,不要尝试使用变量的值

int a;

printf("a的值是:%d\n", a);

上面的写法是不建议的

 

3.课程代码

 

 1 #include <stdio.h>
 2 
 3 
 4 // 1.内存寻址由大到小,优先分配内存地址比较大的字节给变量 
 5   
 6 // 2.变量越先定义,内存地址就越大 
 7   
 8 //3.取得变量的地址:&变量名 
 9   
10 // 4.输出地址:%p 
11   
12 //5.一个变量一定先进行初始化,才能使用 
13  
14 
15 int main() 
16 { 
17     // 内存寻址由大到小 
18     int a = 10; 
19     
20     int b = 20; 
21     
22     int c; 
23     
24     // &是一个地址运算符,取得变量的地址 
25     // %p用来输出地址 
26     // 0x7fff56f09bc8 
27     printf("a的地址是:%p\n", &a); 
28     // 0x7fff56f09bc4 
29     printf("b的地址是:%p\n", &b); 
30     // 0x7fff56f09bc0 
31     printf("c的地址是:%p\n", &c); 
32     
33     //由于变量c没有经过初始化,所以直接拿来使用是不对的 
34     //int d = c  + 1; 
35     
36     
37     printf("c的值是%d\n", c); 
38     
39     return 0;
40 
41 }

 

【学习笔记】【C语言】变量的内存分析

标签:

原文地址:http://www.cnblogs.com/dssf/p/4542509.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!