引用
charles_yang 的 指针和对象的区别
简单来说,指针是一栋大楼的门牌号码,它的对象是这栋大楼。
程序说明,主要是为程序中用到的变量开内存单元。
程序开头的指针说明干什么呢,也是开内存单元,为的是放门牌号码。无论楼大楼小那怕是一间屋,它的指针,也就是门牌号码,都一般大,只占一个内存单元。
如果程序中要用到钉了某门牌号的大楼的房间怎么办呢?
你要另给大楼分配内存才行。否则你只有门牌,没有楼。
例如:
char *buff; -- buff是存放字符大楼门牌的单元
buff = (char *) malloc(32*sizeof(char)); -- 给钉了门牌号“buff“的大楼,建造32个放间,每个房间大小是一个字符。
程序中有时不用malloc来给指针分配对象,而用另一种方法,让指针有个对象(或对象有个指针),例如:
float *p; -- p是存放浮点大楼门牌的单元
float a[100]; -- 浮点大楼
a[9] = 9.0;
p = &a[0];
printf("%f\n",p[9]);
上面的p = &a[0]; &a[0]算出浮点大楼的门牌号,把门牌号码放到存放门牌号码的单元p. 以后用p去找浮点大楼的放间。