c陣列指標問題p 為什麼會報錯呢

時間 2022-02-14 11:30:11

1樓:匿名使用者

上面說的都很對~ 不過我想樓主的題目好像是說陣列指標的問題,如果樓主是想要實現陣列指標的話

int *p = name; 是不對的,這個p只是乙個普通的int型別指標,並不是陣列指標

應該寫成 int (*p) [3] = &name;

這樣p才是乙個陣列指標, 而且是 int [3] 型別的陣列指標這樣的話cout << (*p)[0] << endl; 就可以正確輸出陣列中第乙個數的值10

2樓:1逝水_無痕

稍微改動下就行了:

#include

int main()

;int * p = name;

cout<<(*(p+0)) << endl;

return 0;

}首先p是乙個指標,雖然它指向了陣列,但指向的僅是當前陣列的首位址,不能用呼叫陣列元素的方法呼叫它。name[1]的值也就是*(p+0),以此類推

逝水無痕真誠為您解答!

3樓:陳冠鋼

這是因為

*p 已經代表了指向第0個元素的值,也即name[0]所以(*p)[0]不代表任何值,或者對於二維陣列是有意義的,但對一維陣列此處是多餘的表達,

更改為如下可以編譯通過

#include

using namespace std;

int main()

;int * p = name;

cout << (*p)<< endl; //若想輸出16,可以用 *(p+1)}

4樓:慕容醒言

沒有這個寫法,如果你想輸出第乙個元素,可以有兩個方法:cout

int main()

;int * p = name;

cout<

return 0;}

5樓:匿名使用者

#include

using namespace std;

int main()

;int * p = name;

cout << p[0] << endl; // 不需要dereference}

6樓:流風回雪

使用*p或者p[0],就行了

此外*(p+1)=p[1]

*(p+2)=p[2]

c++問題,為什麼int*p=0可以表示為空指標,而int*p=100卻不能表示乙個位址呢?

7樓:匿名使用者

當然可以了. 只是約定成0 等於 空指標是乙個習俗一樣.

你如果寫乙個程式. 裡面統一約定成=2 是空指標也可以啊.

只是某些地方你判定乙個指標是否有效要麻煩一些.

c指標陣列問題,C 中關於指標陣列的問題。

typedef 是 定義一種資料型別 就好像內建的資料型別如 int 它僅是乙個定義,不產生例項物件,即不分配任何記憶體,怎麼能給它賦值呢?對陣列賦初值的方法用for迴圈,在這裡還可用memset nod的記憶體分配在動態棧上,所以值不能確定,要初始化,必須使用顯式的方式。cdma980的回答是對的...

python報錯,python 為什麼會報錯。

第5行錯誤 bmi float weight height 2 修改為 bmi float weight height height height 2 這種符號是給人看的,在python看來,這個是邏輯異或符號。正確的方式是這個 import math math.pow height,2 另外,寫程...

C語言fscanf為什麼這樣子做會報錯同檔案下有file1 這個檔案且不為空

printf n open file error.後面加一句 return 0 否則,fopen 出錯後仍會進入while。你的錯誤資訊是 main 已有,ffile11.obj 裡出現了,現在的程式是 file12。main 重複定義了。所以要查一下你的編譯和鏈結設定。一般簡單程式,我在dos黑窗...