最赞回答 / Xiaoyan123
32位编译器: char :1个字节 char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器) short int : 2个字节 int: 4个字节 unsigned int : 4个字节 float: 4个字节 double: 8个字节 long: 4个字节 long long: 8个字节 unsigned lo...
2015-06-28
p;指针指向的变量地址
*p;指针指向的变量值
&p;指针自己所在的地址
既然一个指针保存的是变量的地址,对32位CPU,地址有4个字节,就需要4个内存单元来存储,所以每次++p在内存里都是跳4格。
*p;指针指向的变量值
&p;指针自己所在的地址
既然一个指针保存的是变量的地址,对32位CPU,地址有4个字节,就需要4个内存单元来存储,所以每次++p在内存里都是跳4格。
2015-06-25
C是靠传入变量地址的方法来实现对变量的全局操作:void f(int *a); 使用:f(&a);
C++有个引用型就方便多了:
传入普通变量:
void f(int &a) {++a;};
f(a); // a自增1
传入指针:
void f(int *&p) {++p;};
f(p); // 此时,指针p的值自增1
C++有个引用型就方便多了:
传入普通变量:
void f(int &a) {++a;};
f(a); // a自增1
传入指针:
void f(int *&p) {++p;};
f(p); // 此时,指针p的值自增1
2015-06-25