引用數組指針
A. C語言用指針引用數組元素
(*p)[3]是定義一個指向一維數組的指針,數組元素為三。也就是說p指向的其實是a[0],a[1],a[2]這樣的形式。
p=a;其實就是把第0行的首地址賦值給p.
所以答案C中p[1]即是把第1行的首地址給p,在此基礎上向後移一位,取出地址中的元素數值。 *(p[1]+1)相當於a[1][1].所以是對的。
B的形式是對的,但是它相當於a[2][1],超出界限所以為錯。剩下的兩個格式就不對。
B. 「用指針引用數組元素」是什麼意思
就是說通過指針來訪問數組,例如有一個指針int *p和一個數組int a[4][2]。如果p=&a則有*p=a[0][0],*(p+1)=a[0][1],*(p+2)=a[1][0]。。專。。指針就是一屬個地址,操作起來會比數組效率高,但是這也在無形中給使用者增加了難度。
C. C語言二維數組指針 函數引用
通俗的說如果把二維數組看做一個表格的話,前面[3]代錶行,而[5]代表列,
而一個數組的代表的最基本含義就是一個行,
那麼數組指針的的話,必然是指向數組即指向行,那麼說回這個題目,
int *[5]代表,該指針指向的是一個列為5個元素組成的數組,那麼int a[3][5]代表的是有3行的每行有5個元素組成的數組,該指針指向的數組的存儲大小與這個2維數組的單行存儲大小匹配,自然可以指向其中的某一行
而int*[3]只有3個元素無法與5個元素相匹配,自然不能指向其中的一行
D. c語言指針變數引用數組
"i love china!"
"i am a student!"
這兩個都是常量字元串,存儲在 靜態存儲區 ,不容修改。
E. 數組指針和數組引用做參數的區別
都可以改變指向空間的值,傳回主函數。
數組指針 是傳入的地址 也就是新版建了一個指針變數(參數變權量),把數組的地址存在裡面了,在程序中,這個參數是可以改變值的。
數組引用,是直接把原本的變數傳過來了,沒有新變數
也就是說,前者要比引用多了一個變數分配 釋放的過程,效率略低,幾乎可以忽略。
前者的優勢是兼容C, 不支持引用的時候代碼不用變。 而且編程更靈活一些。
F. 通過指針引用數組元素
[0]是首地址, &a[0][0]+3*1+2是首地址後面第五個元素,也就是a[1][2]
不能 p=a 這樣賦值,p是int*[2]類型,a是int[2][3]類型 類型不同不能賦值
int a[2][3]是申請的一個連續地址,而*p[2]是一個指針數組,如果你能把每一行的首地址賦給這個指針數組的話,可以這么使用。但是如果只是給首地址賦值的話,此時這個指針數組的第二個元素,也就是第二行的首地址為一個隨意地址,沒有意義,不是連續的,所以不能實現*(p+3*1+2)來表示a[1][2]
G. 指向數組的指針和數組名的引用有何異同
指向數組的指針和數組名的引用有何異同,指向數組的指針是可以重新賦值的,可以讓它指向別的變數。而數組名是一個常量指針,它是不可以更改值的。
H. 通過指針數組引用數組元素
*(&a[0][0]+3*1+2) &a[0][0]是首地址, &a[0][0]+3*1+2是首地址後面第五個元素,也就是a[1][2]
不能 p=a 這樣賦值,p是int*[2]類型,a是int[2][3]類型 類型不同版不能賦權值
int a[2][3]是申請的一個連續地址,而*p[2]是一個指針數組,如果你能把每一行的首地址賦給這個指針數組的話,可以這么使用。但是如果只是給首地址賦值的話,此時這個指針數組的第二個元素,也就是第二行的首地址為一個隨意地址,沒有意義,不是連續的,所以不能實現*(p+3*1+2)來表示a[1][2]
I. 指針、數組名、引用三者的相同點與區別
上面一些說的太多,但重點沒說;
1.指針:存放變數的地址的變數;
2. 數組名: 是一個常量類型的指針,這是與「指針」變數的最主要區別;
3.引用:用「地址」直接表示一個變數的手段,而指針是間接表示一個變數;
-----------------------------
!!!!!!!!!!!!!!!!
樓主連貼也不看了、也不結了,太忙了吧
J. c++ 怎麼用引用傳遞 傳 數組 ,怎麼用指針傳遞傳數組 求大神。 ,,,,
1 .函數定義:void f1(int *b[],int i) 函數調用 :f1(b,i);
你有沒有發現 b是一個指向指針的指針了,用指針,你應該這樣寫:
函數定義:void f1(int *b,int i) 函數調用 :f1(&b,i);表示函數定義里邊的b指向main函數里邊 的 b;
2.用引用:函數定義:void f1(int* &b,int i) 函數調用 :f1(b,i);表示指針的引用。void f1(int &b[],int i)你這樣寫,就不對了吧,引用的指針。沒有這樣寫的啊。
注意,形參和實參是不一樣的。void f1(int *b,int i) 函數調用 :f1(b,i);如果你這樣寫,只是把main的b賦值個f1的b。並不是main函數里的b的本身。