C/C++学习一
2015-07-22 18:29
239 查看
一直在做应用,最近想花一点时间学习一下c/c++,研究的比较浅,求喷求指导
第一篇简单的看了一下指针
解决了一些自己一直以来没有理解的东西,看着没什么干货,不过感觉自己受益颇丰。
运行结果:
结果说明
1.a的值
2.a的地址
3.a的地址
4.b的值也就是a的值
5.b的地址
小结一下:(关键是int *这玩意儿就是个数据类型,以前想太多了)
int *为指针类型;
变量b为一个指针类型的变量,他有自己的地址也就是&b(所有变量取值都是*,取地址&);
b赋值的时候其实写的很清楚&a,a的地址;
*b相当于*&a,a的值
就是如此简单啊。
这俩问题竟然带出来一系列的问题。。。。
答案:(问题中产生的问题,所以一起找原因了)
32位操作系统:4字节
64位操作系统:8字节
为何会有区别呢?原因是cpu寻址空间大小的改变:
32位最大的寻址空间为2^32=4G=4 294 967 296
64位最大的寻址空间为2^64=2^14T=1.844674407371 * 10 19
由于我是在64位机器上编译的,所以地址都比较大(刚开始玩用整形输出溢出了。。醉)
为啥b比a晚初始化,地址比a小?并不一定是这样的,和系统有关系,有时候是正序去创建地址有时候是逆序(向低位)创建。
有什么联系呢?这两地址之差是12(当然可能会出现不连续的状况,这里不谈),a是64位int占4个字节。指针变量b占8字节。
其实地址是没有单位的,或者说他根本不是一个需要单位的值,内存中每一个地址表示
1 字节,32位系统的4字节地址容量可以标记4G内存中的所有字节,所以问题在与没有理解地址。。
第一篇简单的看了一下指针
解决了一些自己一直以来没有理解的东西,看着没什么干货,不过感觉自己受益颇丰。
一.什么是指针
写了无数遍这样的代码,很久以来都没有懂#include <stdio.h> void main(){ int a = 1; int *b = &a; printf("a:%d\n", a); printf("&a:%ld\n", &a); printf("b:%ld\n", b); printf("*b:%d\n", *b); printf("&b:%ld\n", &b); }
运行结果:
a:1 &a:140736506765324 b:140736506765324 *b:1 &b:140736506765312
结果说明
1.a的值
2.a的地址
3.a的地址
4.b的值也就是a的值
5.b的地址
小结一下:(关键是int *这玩意儿就是个数据类型,以前想太多了)
int *为指针类型;
变量b为一个指针类型的变量,他有自己的地址也就是&b(所有变量取值都是*,取地址&);
b赋值的时候其实写的很清楚&a,a的地址;
*b相当于*&a,a的值
就是如此简单啊。
二.指针作为变量的一些属性
上面&a,b,&b这种地址为何这么大,单位是什么(bit?byte?)?怎么玩的呢?既然指针类型是是种数据类型,占多大呢?这俩问题竟然带出来一系列的问题。。。。
答案:(问题中产生的问题,所以一起找原因了)
32位操作系统:4字节
64位操作系统:8字节
为何会有区别呢?原因是cpu寻址空间大小的改变:
32位最大的寻址空间为2^32=4G=4 294 967 296
64位最大的寻址空间为2^64=2^14T=1.844674407371 * 10 19
由于我是在64位机器上编译的,所以地址都比较大(刚开始玩用整形输出溢出了。。醉)
&a:140736506765324 &b:140736506765312看到上面的运行结果有疑问:
为啥b比a晚初始化,地址比a小?并不一定是这样的,和系统有关系,有时候是正序去创建地址有时候是逆序(向低位)创建。
有什么联系呢?这两地址之差是12(当然可能会出现不连续的状况,这里不谈),a是64位int占4个字节。指针变量b占8字节。
其实地址是没有单位的,或者说他根本不是一个需要单位的值,内存中每一个地址表示
1 字节,32位系统的4字节地址容量可以标记4G内存中的所有字节,所以问题在与没有理解地址。。
相关文章推荐
- UVa10935 用map将string映射成int处理问题
- 【转】C/C++函数的系统调用的几种方式
- c语言,变长数组
- C语言,sprintf与sscanf函数[总结]
- c语言,数组和指针
- C++空类中的默认函数
- 【C语言】一些关于二进制位的一些题题目哦。
- c语言2进制 位运算 应用
- 第十七周oj刷题——Problem O: B C++时间类的运算符重载
- C++不懂得名词用法
- C++——代码重用
- 回调函数_解析
- c语言简单的猜数字小游戏
- 【C++】构造函数 析构函数 虚函数
- 深入C++之C++模板类别
- c语言,const被绕过
- 深入C++之const对象行为
- C语言批量数据到动态二维数组
- 函数指针回调函数
- c语言,结构体