若有定義int Pt

時間 2023-03-25 08:40:03

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...