置頂
C函式傳入二維陣列
先附上程式碼
#include <stdio.h>
#include <stdlib.h>
void printfLegal(int *array);
void main(void) {
int i,array[10][3];
srand((unsigned)time(NULL));
for(i=0;i<10;i++){
array[i][0]=rand()100+1;
array[i][1]=rand()10+1;
array[i][2]=rand()5+1;
}
printfLegal(array);
}
void printfLegal(int *array){
int i;
for(i=0;i<10;i++){
printf("d d d\n",*(array+i*3+0),*(array+i*3+1),*(array+i*3+2));
}
}
跑出來結果似乎是正確的
不過有出現警告如下:
第14行:[Warning] passing argument 1 of 'printfLegal'
from incompatible pointer type
第4行:[Note] expected 'int *' but argument
is of type 'int (*)[3]'
看了很久還是不懂為什麼會跳出來這些訊息
可以請大家指點一下嗎?
up vote
0
洪峻龍 廖麗華
游世杰 黃齡微
彭瑞華 黃巧筑
柯展裕 洪秀柱
李家臻 黃偉庭
up vote
0
另外,我看不懂
for(i=0;i<10;i++){
array[i][0]=rand()100+1;
array[i][1]=rand()10+1;
array[i][2]=rand()5+1;
}
不適應該寫成 ==>
for(i=0;i<10;i++){
array[i][0]=rand(100)+1;
array[i][1]=rand(10)+1;
array[i][2]=rand(5)+1;
}
up vote
0
好幾種改法
void printfLegal(int *array)
==>
void printfLegal(int **array)
void printfLegal(int *array[])
void printfLegal(int array[][3])
up vote
0
![]()
up vote
0
![]()
up vote
0
感謝分享
up vote
0
int [10][3] 跟 int *其實是不同的東西
改這樣int (*array)[3]
也可以傳int array[][3],這兩個等價
函數不能傳或返回陣列,但可以傳或返回陣列的指標
會員登入
(先登入會員才能回覆留言喔!)
