LoginSignup
0
0

More than 1 year has passed since last update.

C言語学び直しメモ 随時更新

Last updated at Posted at 2022-04-13

物理アドレス0番地にはリセットベクタでブートローダが入っている(ことが多い)
仮想アドレス0番地にはNULLが入っている

#include <stdio.h>

int sum(int array[]);

int main(void){
    int vector[5];
    printf("len=%zu\n",sizeof(vector)/sizeof(int));
    sum(vector);
}


int sum(int array[]){
    printf("len=%zu\n",sizeof(array)/sizeof(int));
    return 0;
}

とすると以下のようになる。

len=5
len=2

配列を宣言したスコープ内では確保したサイズから要素数を取得できるが、引数として渡すと確保したサイズが取得できないため要素数を取得できない。
つまり配列を引数として渡すことはできない(ポインタ扱いになる)
ここによるとhttps://www.jpcert.or.jp/sc-rules/c-arr01-c.html

配列型又は関数型を持つと宣言された仮引数に適用する場合、sizeof 演算子は、型調整された(ポインタ)型の大きさを与える。

0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0