ので、次のように与えられる:配列の大きさはどれくらいですか?
#include <stdio.h>
int * getarr();
int main(int argc, char* argv)
{
int * arr = getarr();
printf("%d", sizeof(arr));
}
int* getarr()
{
static int a[4] = {0,1,0,3};
return a;
}
どのように1はarr
の長さを見つけるのですか? arr[4] == 0
ですが、arr[0]
とarr[2]
もあります。
これがchar*
の場合、回答はiterate until '\0'
となりますが、ここでは'\0' == 0
としては機能していないようです。 1(私のシステム上のint型のサイズ)が、それは単に空のように私を打つように、その信頼性の高い指標ではないようです - arr[5]
缶への対処
は16 >一貫値になるように思われますメモリ内の位置。
この値を一貫して取得する方法はありますか?それとも単に渡されなければならないのでしょうか?
'arr [4]'以上は未定義の動作です。 – Mat
@Mat、私は信じていたが、それは関連性があるように思えた。 – cwallenpoole
次のように同じです:http://stackoverflow.com/questions/2089071/array-length-in-c – Nik