指針的創(chuàng)建
Person *p = [Person alloc] init];
p.name = "小明";
這句代碼的意義就是創(chuàng)建一個(gè)Person類型的指針,p才是我們創(chuàng)建的變量而不是*p惩嘉。那這段代碼為什么不這樣寫 Person* p = [Person alloc] init];
?
別急赡磅,先看看這句代碼
int* a,b;
按我的邏輯這就是定義了a,b兩個(gè)指針斯撮,但是其實(shí)這樣是定義了一個(gè)a指針和一個(gè)b整型泽铛。int *a,*b
才是定義兩個(gè)指針丐巫,既然定義一個(gè)指針的時(shí)候int* a
和int *a
都行饺谬,那我們就保持*a
這種方式好了。
*和&的用法
有這么一段經(jīng)典代碼冬殃。
int a = 1;
int *p = &a;
int b = *p;
思考一下b最終等價(jià)于什么囚痴?
你可能會(huì)有這樣的騷操作。
*p = &a;
b = *p;
這不是小學(xué)生就懂的邏輯嗎审葬?
b = &a
好深滚,換成文章開頭提到的寫法
int* p = &a;
int b = *p;
你說還行的通嗎?p是一個(gè)int類型的指針int*
涣觉,此*p
非彼*p
痴荐。
你可能想說。好吧官册,的確行不通 生兆。我現(xiàn)在知道a 是什么,p是什么膝宁。但是&a和*p你沒告訴我是什么鸦难,這怎么解。好员淫,是時(shí)候告訴你用法了合蔽。
&a 變量a的地址(&符號:取地址)
*p p指針指向的變量(*符號:取變量)
再思考一下b最終等價(jià)于什么?
p是a的地址介返,*p不就是a嗎拴事。
最后答案就是 b = a
總結(jié)一下*號的兩種用法
聲明int*
和 引用*p
。