想請教一下
目前我有兩個關於c語言中陣列的問題
1.不知道有沒有什麼方法可以快速的比對兩個二維陣列的內容是否一樣
ex: int abc[3][3]= 如下
{3,4,5,
6,7,8,
9,0,1};
int def[3][3]=如下
{3,4,5,
6,7,8,
9,0,1};
該如何快速的得知 abc=def??
而不是把其中的值一個一個去比對.
2.不知有沒有快速的方法能夠把一個二維陣列的所有內容複製到另一個二維陣列?
ex: int abc[3][3]=如下
{1,2,3,
4,5,6,
7,8,9};
int copy[3][3];
不知有沒有比較快速的方法能一次把copy這個陣列的內容變成跟abc中的一模一樣?也就是一次性的把abc的內容複製到copy裡.
煩請知道的人能幫忙解答一下~非常感謝
2006-11-17 13:49:09 · 2 個解答 · 發問者 Euphoria 2 in 電腦與網際網路 ➔ 程式設計
感謝您們的回覆~我的問題已經解決了~但兩個答的都很好~不知道該選誰為最佳解答~所以我把它交付投票嘍~再次感謝
2006-11-19 06:12:05 · update #1
有2個函數可以用,會快一點點:memcpy(*目的,*來源, byte數) 和 memcmp(*m1, *m2, byte數)注意,它們要的是byte數,所以用你的例子,要 sizeof(abc),而不是 9不過,現代的 compiler 最佳化不錯。經過最佳化後,用〝2個for〞和 mepc__ 的速度差不多。
2006-11-17 18:40:53 · answer #1 · answered by ? 7 · 0⤊ 0⤋
你可以利用 memcmp() , memcpy()
假設 a[3][3] 和你的 abc 一樣, b[3][3] 沒有初值
把 a 的內容 copy 到 b : // memcpy(目地,來源,多少 byte)
memcpy(b,a,9*sizeof(int));
比較 a 和 b 的內容: // 傳回值如果是 0 表示兩個相等
int r;
r = memcmp(a,b,9*sizeof(int));
if(0 == r) 表示 a 的內容和 b 的內容一樣
要 #include
2006-11-17 18:43:14 · answer #2 · answered by 鳳琳 5 · 0⤊ 0⤋