上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
Okerofujin 略有貢獻的成員
註冊時間: 2007-10-19 文章: 71
-40.53 果凍幣
|
發表於: 2008-5-18, PM 4:11 星期日 文章主題: 問題 |
|
|
問題
Okerofujin 在 2018-7-5, PM 11:44 星期四 作了第 1 次修改 |
|
回頂端 |
|
|
satanupup 喜歡上這裡的冒險者
註冊時間: 2007-05-29 文章: 80
68.10 果凍幣
|
|
回頂端 |
|
|
Okerofujin 略有貢獻的成員
註冊時間: 2007-10-19 文章: 71
-40.53 果凍幣
|
發表於: 2008-5-19, AM 2:14 星期一 文章主題: |
|
|
問題
Okerofujin 在 2018-7-5, PM 11:44 星期四 作了第 1 次修改 |
|
回頂端 |
|
|
mirror 散播福音的祭司
註冊時間: 2007-07-27 文章: 174
828.60 果凍幣
|
發表於: 2008-5-19, AM 5:35 星期一 文章主題: |
|
|
HPkon 寫到: | satanupup 寫到: | http://elearning.stut.edu.tw/electric/EE/TEACH/C++/C++6.files/frame.htm |
呃...
上面這是在介紹指標...沒錯吧???
然後最後一章是在說『動態陣列』...沒錯吧???
可能是在下的問題沒說清楚吧!!!
說明白一點好了!!!
假如定義一個2維陣列aa[2][3]={{1,2,3},{4,5,6}}
請問如何用『指標』搭配『迴圈』印出aa陣列裡的值
在下想知道的是各位大大的寫法!!! |
代碼: |
int a[2][3] = {{1,2,3},{4,5,6}};
int *p;
char s[20];
cout << "Address Value" << endl;
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
p = &a[i][j];
sprintf(s,"a[%d][%d]= 0x",i,j);
cout << s << p << " Value= " << *p << endl;
}
} |
|
|
回頂端 |
|
|
babu61509 散播福音的祭司
註冊時間: 2007-08-26 文章: 142
681.01 果凍幣
|
發表於: 2008-5-19, AM 9:51 星期一 文章主題: |
|
|
另一種寫法,不過比較建議使用樓上的XD
因為比較看的懂. v.
偵錯也比較好偵.
但是想學好c++還是要看的懂指標的運算用法...
代碼: |
int a[2][3] = {{1,2,3},{4,5,6}};
int lo = sizeof(a)/sizeof(int);
int *p = *a;
for(int i=0;i<lo;i++)
{
cout << p << " = " << *p << endl;
p++;
}
|
_________________ 已經畢業了!! |
|
回頂端 |
|
|
Okerofujin 略有貢獻的成員
註冊時間: 2007-10-19 文章: 71
-40.53 果凍幣
|
發表於: 2008-5-19, PM 7:58 星期一 文章主題: |
|
|
問題
Okerofujin 在 2018-7-5, PM 11:45 星期四 作了第 1 次修改 |
|
回頂端 |
|
|
babu61509 散播福音的祭司
註冊時間: 2007-08-26 文章: 142
681.01 果凍幣
|
發表於: 2008-5-19, PM 11:52 星期一 文章主題: |
|
|
0.0
我第一次看到有人宣告指標陣列耶XDD (原來可以這樣用阿0口0)
更神奇的是...指標陣列的指向...
代碼: |
p[0] --- > a[0] = 1
a[1] = 2
a[2] = 3
p[1] --- > a[3] = 4
a[4] = 5
a[5] = 6
p[2] --- > ????????
|
好詭異的東西XDD _________________ 已經畢業了!! |
|
回頂端 |
|
|
Okerofujin 略有貢獻的成員
註冊時間: 2007-10-19 文章: 71
-40.53 果凍幣
|
發表於: 2008-5-20, AM 12:38 星期二 文章主題: |
|
|
問題
Okerofujin 在 2018-7-5, PM 11:45 星期四 作了第 1 次修改 |
|
回頂端 |
|
|
mirror 散播福音的祭司
註冊時間: 2007-07-27 文章: 174
828.60 果凍幣
|
發表於: 2008-5-20, AM 1:31 星期二 文章主題: |
|
|
代碼: |
p[0] --- > a[0] = 1
a[1] = 2
a[2] = 3
p[1] --- > a[3] = 4
a[4] = 5
a[5] = 6
p[2] --- > ????????
|
指標超出區塊範圍
很明顯的發生未預期的錯誤 |
|
回頂端 |
|
|
lsk 喜歡上這裡的冒險者
註冊時間: 2007-06-20 文章: 93
20.59 果凍幣
|
發表於: 2008-5-20, AM 2:07 星期二 文章主題: |
|
|
HPkon 寫到: | 啊~~~
這樣的寫法沒人這樣寫嗎???
我以為這是很普通的寫法耶!!!
這是指宣告一個p指標指向一個有3個int元素的a陣列
|
這樣才對。"這是指宣告一個p指標指向一個有3個int元素的a陣列"這句話沒錯,但是a並沒有3個int元素,a[0]和a[1]才有。所以應該是宣告兩個*p來指向a,以避免你的指標指到未知的數值去。不確定的話,可以用你的debugger去看你的變數存到了什麼喔~ (用watch功能,在VS的話可以自己把想看的變數拉到watch視窗裡面看。) |
|
回頂端 |
|
|
Okerofujin 略有貢獻的成員
註冊時間: 2007-10-19 文章: 71
-40.53 果凍幣
|
發表於: 2008-5-20, AM 7:46 星期二 文章主題: |
|
|
問題
Okerofujin 在 2018-7-5, PM 11:45 星期四 作了第 1 次修改 |
|
回頂端 |
|
|
lsk 喜歡上這裡的冒險者
註冊時間: 2007-06-20 文章: 93
20.59 果凍幣
|
發表於: 2008-5-20, PM 12:02 星期二 文章主題: |
|
|
lsk 寫到: | HPkon 寫到: | 啊~~~
這樣的寫法沒人這樣寫嗎???
我以為這是很普通的寫法耶!!!
這是指宣告一個p指標指向一個有3個int元素的a陣列
|
這樣才對。"這是指宣告一個p指標指向一個有3個int元素的a陣列"這句話沒錯,但是a並沒有3個int元素,a[0]和a[1]才有。所以應該是宣告兩個*p來指向a,以避免你的指標指到未知的數值去。不確定的話,可以用你的debugger去看你的變數存到了什麼喔~ (用watch功能,在VS的話可以自己把想看的變數拉到watch視窗裡面看。) |
對不起!! 是我錯了。上班時回文沒有仔細查證,其實你說的對 我那個宣告方式的確會有這個錯誤:error C2440: 'initializing' : cannot convert from 'int [2][3]' to 'int (*)[2]' (我家裡的compiler是VC2008 Express,明天再去公司試一次)
再次道歉~~ |
|
回頂端 |
|
|
happylin 略有貢獻的成員
註冊時間: 2007-07-26 文章: 70
127.34 果凍幣
|
發表於: 2008-5-20, PM 7:55 星期二 文章主題: |
|
|
int (*p)[3];
這個為宣告一個指標. 他可以指向 大小為3 的一維int 陣列..
寫的真是文粥粥
for example
代碼: |
typedef int A[3]; // 訂義一個行別. 為int 陣列. 大小是3
int main()
{
A x[2]={{1,2,3},{2,4,6}}; // A 陣列 大小為2 (其就是 int [2][3] )
int (*p)[3]=x; // 宣告一個指標p. 指向x , p 只能指向大小為3 的int 陣列
int i,j;
for( i = 0 ; i < 2; ++i)
{
for( j = 0 ; j < 3 ; ++j)
{
std::cout << p[i][j] << " ";
}
std::cout << std::endl;
}
}
|
|
|
回頂端 |
|
|
|