最贊回答 / 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