如下代碼所示,我想在Count函式中計算main函式中arr陣列的長度,但是不正確,應該如何計算呢???
#include <stdio.h>
#include <malloc.h>
int Count(int* arr)
{
int n = 0;
//以下代碼計算不正確
while((arr+n) != NULL){
n++;
}
return n;
}
int main()
{
int arr[6] = {1,4,5,8,12,20};
printf("count = %d\n", Count(arr));
retunrn 0;
}
uj5u.com熱心網友回復:
arr陣列是沒有結束標志的,count函式計算不出它的長度。uj5u.com熱心網友回復:
那我就是要完成這么一個功能該如何實作呢?
uj5u.com熱心網友回復:
打個比方:已知南京路第一個門牌號是100,求南京路一共有多少個門牌號?(能做出這個題目,就能解決你的問題)陣列名就是陣列第一元素的序號0.
uj5u.com熱心網友回復:
陣列中的元素不是以NULL結尾,并且也沒有NULL元素呢。陣列的求長度:在main函式里,執行n = sizeof(arr)/sizeof(arr[0]);
uj5u.com熱心網友回復:
除非是字串,子函式中無法求出int陣列的長度uj5u.com熱心網友回復:
你可以在int陣列的最后用一個特別的數字作為結尾標記,只要遇到這個數字,就退出回圈,借此獲得int陣列的長度,這也是字符陣列用來判斷字串長度的方法。不然的話,由于C并不提供陣列越界檢查,你是無法檢測一個int陣列到底有多長的。
uj5u.com熱心網友回復:
我的目的是要在子函式中求出指標陣列的長度啊,不是在main中求
uj5u.com熱心網友回復:
我的目的是要在子函式中求出指標陣列的長度啊,不是在main中求
uj5u.com熱心網友回復:
不好求,除非你定義好陣列中最后一個元素的值,否則怎么去求?
另外,專門用子函式去求陣列長度反而把問題復雜化了。
陣列傳遞給子函式就不是陣列了,而是指標,這個你需要注意
uj5u.com熱心網友回復:
Count(arr,6)。傳多個長度引數uj5u.com熱心網友回復:
或者把呼叫函式改為Count(&arr),函式寫成inr Count((*arr)[6])uj5u.com熱心網友回復:
sizeof(arr)/sizeof(arr[0]) 就能表達為什么多次一舉,還浪費運行時間uj5u.com熱心網友回復:
sizeof(arr)/sizeof(arr[0]) 就能表達為什么多次一舉,還浪費運行時間
陣列中的元素不是以NULL結尾,并且也沒有NULL元素呢。
陣列的求長度:在main函式里,執行n = sizeof(arr)/sizeof(arr[0]);
我的目的是要在子函式中求出指標陣列的長度啊,不是在main中求
sizeof(arr)/sizeof(arr[0]) 不就好咯,還想再寫的看上去"叼"一點,你用個宏咯 ,如
#define _count_array(arr) (sizeof(arr)/sizeof(arr[0]) )
以后用的時候就_count_array(arr),就是陣列的大小咯
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/49231.html
標籤:C語言
下一篇:求用c#設計 幫幫孩子做道題
