我先在主函式定義個陣列,傳入一個函式,把1000以內的素數放進陣列,再把陣列回傳。可是我不知道陣列大小,編譯報錯,怎么才能解決這個問題?
/*int ArrSh[]=NULL;//初始化素數陣列
int[] Sss(Arrsh); //賦值*/
uj5u.com熱心網友回復:
這什么奇葩語法...如果你要回傳陣列,可以選擇:
1: 傳遞指標 (推薦)
int func(int arr[1000]) {
arr[...] = ...;
}
int main(void) {
int arr[1000];
fun(arr);
}
2: 回傳結構體
struct a {
int arr[1000];
};
struct a func(void) {
return ....;
}
int main(void) {
struct a stru = func();
stru.arr[...];
}
3: 全域物件,很簡單,不需要例子。
uj5u.com熱心網友回復:
你好,大佬,1:傳遞指標,我記得需要一個長度傳入函式,我看您給出的例子中,給了陣列一個1000長度的整型空間,我這邊的情況是默認不清楚長度,是不是我記錯指標用法了?
2,3方法的話,我目前還沒學到,不做評論。
uj5u.com熱心網友回復:
如果你指形參里的 1000 的話,沒有任何作用。長度傳與不傳都是可以的,關鍵看你代碼的需求。如果你的函式需要長度,那么就:
void func(int n, int arr[]) {
// 用 n 和 arr 干一些事...
}
uj5u.com熱心網友回復:
我是指主函式中的1000,我這個素數例子不需要長度,也不知道長度。
另外我函式使用錯誤了,假如我傳了陣列指標到函式里,函式結束后也就不需要return陣列了,而且我不知道回傳型別可不可以是一個陣列
uj5u.com熱心網友回復:
我是指主函式中的1000,我這個素數例子不需要長度,也不知道長度。
另外我函式使用錯誤了,假如我傳了陣列指標到函式里,函式結束后也就不需要return陣列了,而且我不知道回傳型別可不可以是一個陣列
1. 不可以不知道長度,你把陣列宣告好后它的大小就不會變了,難道你指望編譯器幫你自動擴容?
2. 不可以回傳陣列,但我上面給了一個周轉方案,就是用結構體包裹陣列。
uj5u.com熱心網友回復:
計算素數本來就是一個漸進的程序, 不能預先知道有多少個素數你只能預先開一個大陣列, 在計算素數的程序當中,邊計算邊填充陣列,也就知道了有效的陣列長度
你可以把這個有效長度回傳,告知這個陣列當中前多少位是有效的素數
你也可以把這個陣列全部初始化成0, 那么函式回傳后, 使用陣列的時候,遇到了陣列當中的0元素,自然也可以知道后面的資料也都是無效的了
其他的一樓都說了
uj5u.com熱心網友回復:
我是指主函式中的1000,我這個素數例子不需要長度,也不知道長度。
另外我函式使用錯誤了,假如我傳了陣列指標到函式里,函式結束后也就不需要return陣列了,而且我不知道回傳型別可不可以是一個陣列
1. 不可以不知道長度,你把陣列宣告好后它的大小就不會變了,難道你指望編譯器幫你自動擴容?
2. 不可以回傳陣列,但我上面給了一個周轉方案,就是用結構體包裹陣列。
謝謝指教,但你讓我說1000內有多少個素數我也說不出來,我本來就是想讓程式幫我算出來的,現在只能先預留一個大范圍的空間給陣列。
uj5u.com熱心網友回復:
如果不知道陣列大小,可以申請動態陣列.轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/143528.html
標籤:C語言
下一篇:新人求教學啊
