C/C++ 学习日记第一棒(数据类型)
2016-01-21 22:21
399 查看
1- 数据类型的本质:固定大小内存块的别名。
2- 压死初学者的三座大山
:a 和 &a 数组数据类型(定义一个1 数组类型; 2数组指针; 3数组类型和数组指针类型的关系)。
代码:
解析:b+1 和 &b+1 结果不一样,是由于 b 和 &b 所代表的数据类型不一样。
b 代表的是数组首元素的地址;&b 代表的是整个数组的地址。所以 b+1 内存增加4个字节,而 &b+1 内存增加40个字节。
3- void 指针的意义
(1)C 语言规定只有相同类型的指针才可以相互赋值;
(2)void* 指针作为
左值用于“接收”任意类型的指针;
(3)void* 指针作为
右值赋值给其他指针时需要强制类型转换:
int *p1 = NULL;
char *p2 = (char*)malloc(sizeof(char)*20) ;4- 不存在 void 类型的变量:C 语言没有定义 void 究竟是多大内存的别名。
5- 变量的本质
(1)程序通过变量来申请和命名内存空间 int a=0;
(2)通过变量名访问内存空间。变量的本质:(一段连续)内存空间的别名(是一个门牌号)。
(3)修改变量有几种方法?
a- 直接。
b- 间接。内存有地址编号,拿到地址编号也可以修改内存!牛!
代码:
void main(){
int a;
int b;
char *p;
a=10;//直接赋值
printf("&a: %d\n", &a);
//间接赋值==》直接通过内存,首先输出 a 的地址,得知 a 的地址为1245024
*((int*)1245024) =200;
printf("a: %d\n", a);
//间接赋值==》通过指针
p = 1245024;
*p = 300;
printf("a: %d\n", a);
}>&a: 1245024
a:200
a:300
6- 数据类型和变量的关系?
> 通过数据类型定义变量。
7- 总结及思考
(1)通过变量往内存读写数据;
(2)不是向变量(而是向变量所代表的内存空间中)读写数据。问:变量跑哪去了?
思考1:变量三要素(名称、大小、作用域),变量的生命周期?
思考2:C++ 编译器是如何管理函数1,函数 2 变量之间的关系的?
====》引出两个重要话题:
内存四区模型
函数调用模型
2- 压死初学者的三座大山
:a 和 &a 数组数据类型(定义一个1 数组类型; 2数组指针; 3数组类型和数组指针类型的关系)。
代码:
void main(){ int a; //告诉 C 编译器分配4个字节的内存 int b[10];//告诉 C 编译器分配40个字节的内存 printf(" b: %d, b+1: %d, &b: %d, &b+1:%d \n",b, b+1, &b, &b+1); }>b: 1244972, b+1:1244976, &b:1244972, &b+1:1245012
解析:b+1 和 &b+1 结果不一样,是由于 b 和 &b 所代表的数据类型不一样。
b 代表的是数组首元素的地址;&b 代表的是整个数组的地址。所以 b+1 内存增加4个字节,而 &b+1 内存增加40个字节。
3- void 指针的意义
(1)C 语言规定只有相同类型的指针才可以相互赋值;
(2)void* 指针作为
左值用于“接收”任意类型的指针;
(3)void* 指针作为
右值赋值给其他指针时需要强制类型转换:
int *p1 = NULL;
char *p2 = (char*)malloc(sizeof(char)*20) ;4- 不存在 void 类型的变量:C 语言没有定义 void 究竟是多大内存的别名。
5- 变量的本质
(1)程序通过变量来申请和命名内存空间 int a=0;
(2)通过变量名访问内存空间。变量的本质:(一段连续)内存空间的别名(是一个门牌号)。
(3)修改变量有几种方法?
a- 直接。
b- 间接。内存有地址编号,拿到地址编号也可以修改内存!牛!
代码:
void main(){
int a;
int b;
char *p;
a=10;//直接赋值
printf("&a: %d\n", &a);
//间接赋值==》直接通过内存,首先输出 a 的地址,得知 a 的地址为1245024
*((int*)1245024) =200;
printf("a: %d\n", a);
//间接赋值==》通过指针
p = 1245024;
*p = 300;
printf("a: %d\n", a);
}>&a: 1245024
a:200
a:300
6- 数据类型和变量的关系?
> 通过数据类型定义变量。
7- 总结及思考
(1)通过变量往内存读写数据;
(2)不是向变量(而是向变量所代表的内存空间中)读写数据。问:变量跑哪去了?
思考1:变量三要素(名称、大小、作用域),变量的生命周期?
思考2:C++ 编译器是如何管理函数1,函数 2 变量之间的关系的?
====》引出两个重要话题:
内存四区模型
函数调用模型
相关文章推荐
- IE7降低内存和降低CPU的几个技巧
- 如何高效的使用内存
- DOS下内存的配置
- XP/win2003下发现1G的内存比512M还慢的解决方法
- PowerShell实现动态获取当前脚本运行时消耗的内存
- C#实现把dgv里的数据完整的复制到一张内存表的方法
- SQL语句实现查询SQL Server内存使用状况
- C语言内存对齐实例详解
- 深入学习C语言中memset()函数的用法
- 全局变量与局部变量在内存中的区别详细解析
- VB读取线程、句柄及写入内存的API代码实例
- php运行提示:Fatal error Allowed memory size内存不足的解决方法
- IE浏览器IFrame对象内存不释放问题解决方法
- C#之CLR内存深入分析
- JavaScript 变量、作用域及内存
- JavaScript避免内存泄露及内存管理技巧
- J2ME编程中的几个重要概念介绍
- c++实现逐行读取配置文件写入内存的示例
- Shell脚本查看进程内存真实占用情况
- w3wp.exe占用cpu过高的解决方法第1/2页