1樓:匿名使用者
1.*是定義乙個變數是指標型,例如,int * p,p是整型指標,指向一塊記憶體,而定義int a,&a表示取這個整型變數的儲存位址,具體什麼時候用這兩個符號,要看函式的引數型別和返回型別,如果是指標型則用p和&a,如果不是就用*p和a
應該是個二維陣列。
c語言允許把乙個二維陣列分解為多個一維陣列來處理。因此陣列a可分解為三個一維陣列,即a[0],a[1],a[2]。每乙個一維陣列又含有四個元素。
例如a[0]陣列,含有a[0][0],a[0][1],a[0][2],a[0][3]四個元素。 陣列及陣列元素的位址表示如下:a是二維陣列名,也是二維陣列0行的首位址,等於是第乙個一維陣列的陣列名和首位址,因此也為1000。
a+0)或*a是與a[0]等效的, 它表示一維陣列a[0]0 號元素的首位址。 也為1000。&a[0][0]是二維陣列a的0行0列元素首位址,同樣是1000。
因此,a,a[0],*a+0),*a,&a[0][0]是相等的。同理,a+1是二維陣列1行的首位址,等於是第二個一維陣列的陣列名和首位址,因此也為1008。 &a[1][0]是二維陣列a的1行0列元素位址,也是1008。
因此a+1,a[1],*a+1),&a[1][0]是等同的。 由此可得出:a+i,a[i],*a+i),&a[i][0]是等同的。
c語言規定,它是一種位址計算方法,表示陣列a第i行首位址。由此,我們得出:a[i],&a[i],*a+i)和a+i也都是等同的。另外,a[0]也。
可以看成是a[0]+0是一維陣列a[0]的0號元素的首位址, 而a[0]+1則是a[0]的1號元素首位址,由此可得出a[i]+j則是一維陣列a[i]的j號元素首位址,它等於&a[i][j]。由a[i]=*a+i)得a[i]+j=*(a+i)+j,由於*(a+i)+j是二維陣列a的i行j列元素的首位址。該元素的值等於*(*a+i)+j)。
3.*是取值,p是位址 ,*p表示p指向記憶體塊中儲存的值,看了上面的解釋也會有所了解。
2樓:網友
是取值。是取址。
看好這個例子。
int *p;
此時 *p中的*指的是指標定義。
宣告 *p為乙個int型指標 為其分配記憶體。
p=2;這裡的*p中的* 便是指 剛剛分配記憶體那個指標變數中。
數值區所儲存的值為2
int a;
a=*p;此處 *p基是取值。
a 的值為2
這個例子是譚浩強老師在書中作的例子。
int a[2][10];
int *p;
int **k;
p=a[1][9];(合法)
k=a[1];(合法)
這裡 k中的數值區儲存的是a陣列的一維位址 而不是陣列中的數。
k是取出其中儲存的數值 也就是存在儲存區的位址此時 位址是作為乙個數值去儲存的。
而**k 取出*k所儲存的位址中 所儲存的數值此時才是a[陣列中真正的元素。
這個例子是最抽象的。
但是 這個例子是最有代表性的。
ps:當然在c++中對*的定義作了擴充套件。
舉個例子。int a[10];
int *p;
此時 a中儲存的是陣列a的首位址。
p=*a也是合法的。
lz你第二個問題中。
沒有給出y的定義語句。
很難就那個問題幫助你。
另外兩個問題 上邊那段話足夠了。
3樓:什麼名字
這個其實可以看概念,概念寫的很清楚。*位址運算子,&為取位址運算子。
有乙個很經典的**:
int main()
int a = 5;
int *p = a;
cout <
請問在c++中使用指標的好處有哪些? 4樓:斯正清帛禹 指標使用比較靈活,如果說它的好處,根據我平時程式設計時的感受,大概有這麼幾點: 1.在資料傳遞時,如果資料塊較大(比如說資料緩衝區或比較大的結構),這時就可以使用指標傳遞位址而不是實際資料,即提高傳輸速度,又節省大量記憶體。 2.資料轉換,利用指標的靈活的型別轉換,可以用來做資料型別轉換,比較常用於通訊緩衝區的填充,比如說,乙個資料緩衝區char buf[100],如果其中buf[0,1]為命令號,buf[2,3]為型別,buf[4~7]為某一數值,型別為int,就可以使用如下語句進行賦值: short*)&buf[0]=cmdid; short*)&buf[2]=type; int*)&buf[4]=value; 3.字串指標,是使用最方便,且常用的。 4.函式指標,形如:#define pmyfun void*)(int,int),可以用在大量分支處理的例項當中,如某通訊根據不同的命令號執行不同型別的命令,則可以建立乙個函式指標陣列,進行散轉。 5.在資料結構中,鍊表、樹、圖等大量的應用都離不開指標。 幾種指標的寫法有什麼區別?請解釋下,謝謝啦! 5樓:網友 前三種是乙個意思,即a是int型指標變數(首先: a是乙個指標,其次a指向int型) 最後一種為: a是指向指標的指標(首先: a是乙個指標,其次,他指向的型別為int*,也是乙個指標) int b; int *a = b; a指向b, 實際上是a這個儲存單元儲存的內容是b儲存單元的位址。 就上面的宣告,通常來說a意味著指標(跟位址相關),*a為指標所指向的值,是值。所以*a=*b為賦「值」操作,int b=10;*a=b也是賦「值」操作,而如果寫成a=b,則兩邊型別不匹配,編譯時就是提示錯誤,在這做法在pc機端不常用,但嵌入式開發中,經常會用到,此時應做強制型別轉換。 6樓:網友 首先是一樣的意思,4是定義指標的指標! 另外乙個問題其實很簡單,只是樓主學習的時候不夠細心我們定義的int *a;這個時候*a是乙個指標,只有定義的時候*a代表指標。 當第二次出現的時候a代表指標,*a代表指標裡面的內容如int *a; int i=10; a=&i;這個時候*a就是10,a就是指向10的指標的值。 在這裡給自己新建立的團隊「c菜鳥助手」打個小廣告,各位如果有c/c++方面不懂的可以一起討論! 不為分數,只為解決問題! 謝謝,祝各位生活愉快! 7樓:網友 一二三沒有區別,都是指向int型的指標a 4是二級指標,表示指標的指標。 a代表儲存變數的記憶體位址,*是解引用符號,表示位址中所儲存的變數值。 指標型別^符號怎麼讀 8樓:網友 y^ (在上) 英文念 y-hat;中文 y-帽 y- (在上) 念 y-bar;中文 y-槓。 y. (在上) 念 y-dot;中文 y-點。 y~ (在上) 念 y-tilde;中文 y-波浪。 y→ (在上) 念 y-arrow;中文 y-箭頭。 指標的指標如何理解? 9樓:網友 打個比方 抽屜是儲存單元,就是我們放資料的地方。抽屜的鑰匙就是指標,有鑰匙我們就能找到抽屜裡面的東西。 那麼指標的指標就是 乙個「裝著鑰匙的抽屜「 的 鑰匙。 c++指標理解題 10樓:匿名使用者 ]優先順序比肢銷慎鬥薯*高,所以歷敬先與a+1結合,再根據與*的轉換得到**(a+1+1),根據p[i]=*p+i),即**(a+2),就是a[2][0] 墨汁諾 答案 選b人口總數 時代指標反映的是總體現象在一定時期內的累計總量水平的指標,所以這四個選項中只有b人口總數才是反映總量水平的指標。時點指標是某一時刻的總量,反映總體已經存在並經常變化的數量狀態在某一個具體時刻的表現,其基本特徵是 第一,指標的數值不嚴格隨時間長短變化 第二,指標數值沒有可加... 指標,其實就是一個記憶體地址 指標變數,就是存放記憶體地址的變數,也就是存放指標的變數,這樣說,通俗了吧,他們之類不應該講區別,而是應該講關係,指標是一個地址,而指標變數時存放地址的變數。的意思是 指向 地址應該對應地址。變數的指標就是變數的地址。存放變數地址的變數是指標變數。允許用一個變數來存放指... 1.p a 1可以。表示p指向陣列a的第1行。2.p a表示p指向陣列a的第0行。3.p a.則 p是陣列a的首地址,這個地址型別是int 4.可以定義成 p 4 但不能p a。因為它們型別不一致。5 p的值與型別與a 0 相等。 菜刀剁菜鳥 1.正確 2.p a是表示p指向陣列a的第0行 p指a ...下列指標中屬於時期指標是的屬於時點指標的是A 人
指標和指標變數的區別是什麼,指標和指標變數有什麼區別呢?
C語言指標問題,行指標的賦值與取值