看板 C_and_CPP 關於我們 聯絡資訊
#include<stdio.h> void SumofArray(int *a[],const int *length); int main(){ int array[10][10]={0}; int m,n,length; printf("Please input the length\n"); scanf("%d",&length); for(m=0;m<length;++m){ for(n=0;n<length;++n){ printf("Please input array[%d][%d]\n",m,n); scanf("%d",&array[m][n]); } } SumofArray(array[],length); return 0; } void SumofArray(int *a[] ,const int length) { int i,j; int sum = 0; for(i = 0;i < length;++i){ for(j = 0;j < length;++j){ sum += a[i][j]; } } printf("The sum is %d",sum); } 這是我寫的計概實習的作業 而作業題目大意是 老師要求說要使用void SumifArray而不使用int 也就是不能 return sum 這題要用指標寫 我對於指標不瞭解 只能照著課本範例試著去寫 結果編譯時 SumofArray(array[],length); 這行出現錯誤 但是因為我只是照著課本亂寫 所以總覺得錯誤好像不只是那裡而已...... 因為那行能試著更改的我都試過 Orz 所以想問一下到底應該怎麼修改 順便跟我講解一下指標在這題裡到底做為什麼功用= =? 2.這題似乎有人不用指標就做出答案 有不少程式問題似乎用不用指標都能寫出 那到底指標用處是什麼? 對於程式算是好的幫助嗎? 3. 在計概指標這節裡 題目範例假設變數 int 很多會在int前加上const 雖然知道const是指常數 但不知道為什麼突然要加那個 加和不加編譯都會通過 那加它有什麼意義存在嗎? 我想這些都是基礎的問題 但我就是一直搞不懂~"~ 所以上來本版大膽請教各位高手 請各位為我解除疑惑>"< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.170.7.101
softwind:你函式的宣告和定義不一樣 const int *length ? 03/15 23:26
softwind:你在傳array進一個func的時候 就是使用ptr而非整個copy 03/15 23:27
softwind:const 這邊應該唸做 readonly 而非常數 03/15 23:29
snowlike:(*a)[10] or a[][10] 03/16 00:54
Alexboo:1. 傳陣列 2. 可以讓你飛來飛去 3.防止手殘改到常數 03/16 15:27