1樓:匿名使用者
(27)若有定義int(*pt)[3];這種宣告可以先把變數名字去掉,也就是int (*3],對於*可以這樣理解,char *s 等同於char s,所以可以理解為int pt[3],也就是d中的解釋。
而對於int *pt[3],則不相同了,首先pt是一個陣列,然後,*用來修飾這個陣列,也就是pt是三個元素都是int指標的陣列名。
(32)有以下程式。
#include
#define n 8
void fun(int *x,int i){*x=*(x+i);}x+i)就是x[i],*x就是x[0],此函式的功能應該很清楚了 */
main()
程式執行後的輸出結果是0
2樓:楓若神明
指標陣列:array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標。
陣列指標:a pointer to an array,即指向陣列的指標。
還要注意的是他們用法的區別,下面舉例說明。
int* a[4] 指標陣列。
表示:陣列a中的元素都為int型指標。
元素表示:*a[i] *a[i])是一樣的,因為優先順序高於*int (*a)[4] 陣列指標。
表示:指向陣列a的指標。
元素表示:(*a)[i]
3樓:匿名使用者
int(*pt)[3]; 是一個指標,你sizeof(pt)值會是4(64位時為8)
這樣定義的pt可以這樣分配空間 pt = new int[n][3]; pt使用時當二維陣列。
c裡面經常這麼寫的。
c++很少看見。
4樓:網友
你可以將他看成 int[3] *pt; 首先他是指標 指標的型別是 int[3] 就是指向的東西 是每行有3個元素的陣列 然後就可以理解了 指標陣列 陣列指標 放在前面的詞區分的重點 指標函式 和 函式指標一樣 我是這樣子理解的 建議你去看下 c指標 有一個pdf介紹的很全。
int (*ptr)[3] 是什麼意思
5樓:
這是指向整型陣列的指標。
可以根據優先順序來看ptr到底是什麼:
int (*ptr)[3]; 因為有(),所以*ptr優先順序最高,他們要首先結合,也就是說ptr首先是個指標。然後是和後面結合,此時可以看出他是指向陣列的指標,最後通過int可以看出,他是指向整型陣列的指標。
6樓:匿名使用者
這是定義一個指向有三個整形數陣列的指標。
7樓:匿名使用者
樓主你好。首先學習指標是有好多概念容易混淆。我來幫你區別一下:
1、int(*p)[3];-ptr為指向含3個元素的一維整形陣列的指標變數(是指標)
2、int *p[3];-定義指標陣列p,該陣列由3個指向整型資料的指標元素組成(是陣列)
3、int(*)3];-實際上可以看作是一種資料型別。也就是第一個(int(*p)[3])中定義的p的資料型別。
其實你要看他到底是什麼,就是要看他最先和誰結合。 比如1中p先與*結合,那就說明p本質是一個指標;而2中p先與後面的[3]結合,說明他本質是一個陣列。再慢慢理解。
希望能幫到你。如有疑問可以再問我。
8樓:手機使用者
翻譯一下:
int *ptr2 =
宣告一個整形指標指向某個地址;
(int)a,a是陣列名,也是陣列首地址,一般是32為的某一個數值,比如說。
a =0x12345678,(int)a將a轉換成整型值,0x12345678,然後將這個數值加1,變成0x12345679,然後再將其轉換成地址,兜了一大圈,其實就是將ptr2指向a的下一位元組。注意不是陣列的下一個元素,因為一個元素有4個位元組,下一個元素地址應該是0x1234567c。
注意此處int *ptr2 = int*)(int)a +1);
與int *ptr2 = int*)(a +1); 的區別,前者是使之指向下一位元組,後者是使之指向下一個元素。
不過,這樣做藐視沒什麼意義。
int *(*p(int))[3] 這是什麼意思?
9樓:go陌小潔
是定義一個3維陣列,陣列中的每個元素是個函式指標,該指標指向一個(帶有1個int引數,返回值為指向int的指標)的函式。
int *p[3] 是一個陣列,有3個成員,其成員是指向整型的指標。
int (*p)[3]是一個指標,它指向一個有3個整型的陣列。
int *p(int);一個形參為int型的返回值為int型指標值的函式。
int *(p(int))定義一個指標指向一個形參為int型的返回值為int型指標值的函式。
int *(p(int))[3]定義三個指標指向一個形參為int型的返回值為int型指標值的函式。
10樓:匿名使用者
定義一個3維陣列,陣列中的每個元素是個函式指標,該指標指向一個(帶有1個int引數,返回值為指向int的指標)的函式。
11樓:真仰澤星
定義一個形參為int型的返回值為int型指標值的三維鋸齒陣列你可以這樣看:int *p(int);一個形參為int型的返回值為int型指標值的函式。
int *(p(int))定義一個指標指向一個形參為int型的返回值為int型指標值的函式。
int *(p(int))[3]定義三個指標指向一個形參為int型的返回值為int型指標值的函式。
12樓:匿名使用者
自己查書,不要動不動就來問!
13樓:大愛d吧
p是函式,該函式有一個整形引數,返回值是指標,該指標指向有3個元素的陣列(注意區分指向陣列的指標和指向陣列首元素的指標的區別),每個元素都是指向整形的指標。
14樓:手機使用者
int a=實際上是用初始化空間後,分配給a ;int*p這個定義根據ansi c++的規定p為指標,必須顯式為其分配空間,否則p指向的未知不定。
二者的差異是ansi/iso c++規範決定的。
若有定義:int *p[3];'則以下敘述正確的是 幫我詳細說說為什麼!謝謝~~
15樓:匿名使用者
a的說法,就bai是p本質上是個陣列。
du,只zhi不過陣列中的每個元dao
素都是指標內。
b的說法,就是p本質上是容個指標,指標指向一個一維的陣列這種題的話,其實可以先根據運算子的優先順序、結合性,先確定識別符號本質上是一個什麼,然後再去補充。
例如,int *p[3],先根據優先順序,等效於*(p[3]),所以p本質上是一個有三個元素的陣列;那麼陣列的每個元素又是什麼呢?是一個指標;那指標指向的又是什麼呢?是指向一個int型的資料;所以整理一下就是p是一個有三個指向int資料的指標的陣列,本質上就是一個陣列。
16樓:
int *p[3];'則以下敘述正確bai的是a.定義了一du個指標zhi
陣列daop,該陣列含有三個元素,內每個。
容元素都是基型別為int的指標。
與b.定義了一個可指向一維陣列的指標變數p,所指一維陣列具有三個int型別元素。
敘述吻合的是。
int (*p)[3];
(27)若有定義int(*pt)[3];,則下列說法正確的是 a)定義了基型別為int的三個指標變數 b)定義了
17樓:匿名使用者
(27)若有定義int(*pt)[3];這種宣告可以先把變數名字去掉,也就是int (*3],對於*可以這樣理解,char *s 等同於char s,所以可以理解為int pt[3],也就是d中的解釋。
而對於int *pt[3],則不相同了,首先pt是一個陣列,然後,*用來修飾這個陣列,也就是pt是三個元素都是int指標的陣列名。
(32)有以下程式。
#include
#define n 8
void fun(int *x,int i){*x=*(x+i);}x+i)就是x[i],*x就是x[0],此函式的功能應該很清楚了 */
main()
程式執行後的輸出結果是0
int(*ptr)[10]; 這個語句到底是什麼意思?完全不理解,請求詳解!!謝謝謝謝。。
18樓:匿名使用者
有括號的先看括號。
*ptr表明ptr物件是一個指標。
然後從右向左看。
[10]表明ptr是一個指向陣列的指標。這個陣列是什麼型別的呢?
看最左邊:int,表明陣列是int型別的。
所以,ptr是一個指向int型別維度10的陣列的指標。
19樓:匿名使用者
int a[10], 理解吧,就是一個整形陣列。
然後把a換成(*ptr),就是說指標ptr指向a,而a是一個整形陣列,所以int(*ptr)[10]; 就是指標ptr指向一個含有是個整形數的整形陣列。
20樓:匿名使用者
定義一個指標陣列ptr 其中含有10個指標變數分別,指向10個int型別的變數。
21樓:匿名使用者
10表示一個二維陣列的列數(例子:a[5][10])這裡的ptr是一個二維陣列的指標。
22樓:匿名使用者
樓主你好。學習指標是有好多概念容易混淆。下面我幫你區別一下:
1、int(*ptr)[10];-ptr為指向含n個元素的一位陣列的指標變數(是指標)
2、int *ptr[10];-定義指標陣列ptr,它由n個指向整型資料的指標元素組成(是陣列)
3、int(*)10];-實際上可以看作是一種資料型別。也就是第一個(int(*ptr)[10];)定義的ptr的資料型別。
其實你要看這種到底是什麼,就是要看他最先和誰結合。 比如1中ptr先與*結合,那就說明ptr本質是一個指標;而2中ptr先與後面的[10]結合,說明他本質是一個陣列。再慢慢理解。
如有疑問可以再問我。
定義int *p[3]表示什麼?
23樓:捨得女孩
它表示一個元素是指向整型的指標的陣列。
原因:首先p相鄰的有兩個運算子*和[ ]的運算優先順序比*的高,故p是一個陣列,p陣列的元素是三個指向整型的指標,所以p是指標陣列。
24樓:匿名使用者
如果完整的話,這應該是一句定義指標陣列吧,也就是定義三個指標變數,三個指標變數又是一個陣列。p[0],p[1],p[2];
沒有這樣子用過。
剛剛試了一下,是這樣子的。例子程式:
#include ""
#include""
#include
using namespace std;
int main()
25樓:
表示指標陣列,有三個元素,每個元素都是指向整形資料的指標。
26樓:匿名使用者
一個陣列。
一個長度為3的陣列。
一個型別為int型指標的長度為3的陣列。
相當於int p[3];
變數定義int *(*p)(int);和int (*p[3])(int);和int *(*p[3])(int);的含義分別是什麼?求大神賜教!
27樓:匿名使用者
int *(p)(int);/p是個函式指標,函式的引數為int型,函式的返回值是int *
int (*p[3])(int)//p[3]是個函式指標,函式的引數為int型,函式的返回值是int
//數值p是個函式指標型數值,每個元素都可以指向一個函式int *(p[3])(int)//p[3]是個函式指標,函式的引數為int型,函式的返回值是int *
//數值p是個函式指標型數值,每個元素都可以指向一個函式。
28樓:
int *(p)(int);—p是個指標,指向一個具有1個int型形參的函式,這函式返回一個int型指標。
int (*p[3])(int);—p是具有3個元素的陣列,每個元素都是指向具有1個int型形參的函式的指標,這個函式返回1個int型值。
int *(p[3])(int);—p是具有3個元素的陣列,每個元素都是指向具有1個int型形參的函式的指標,這個函式返回1個int型指標。
供參考……
c語言題目 若有下列定義 char a int b floa
豬頭或火寶寶 你好!char a int b float c double d c b d c這個表示式中含有不同的資料型別,那麼編譯器就會自動把低階型別向高階型別轉換 當然這個轉換是自動轉換的 即編譯器會把char int,float 轉換成double的型別,c b d c但是我們定義變數c是f...
若有定義int i 1則執行完迴圈while i5 以後i的值為多少?請大神詳細說明程式執行
當條件不滿足時他退出了迴圈,但是i的值還是改變了,只是迴圈內沒有輸出而已 人生若夢多好 執行完之後,i的值為5.因為,即括號是一個順序點,在一個順序點進行完之後,語句的 就完成了。i 5的 就是將i的值增加1.i 5,即條件最後一次為真時i的值為4.但是,i 這個表示式先使用i的值,後執行語句。所以...
若有以下定義語句則sizeofa和sizeofb的值分
如果一個int佔兩個位元組的話,也就是原來的16位系統,則只能選a了。因為,只有a才接近,而且struct沒有什麼策略,是多少就佔多少。而b是指標,存放地址,16系統地址就是2個位元組。a a 5 2 看樣子是16位編譯系統 int day 2位元組 char moutn 1位元組 int year...