回答編集履歴

1 内容修正

tacsheaven

tacsheaven score 12816

2017/03/10 19:15  投稿

```C
int noname(int *str) {
   int suuti= sizeof(str)/ sizeof(str[0]);
   printf("%s\n%d",str,suuti);
}
```
この noname は int型へのポインタである str を受け取っていますから、
sizeof(str) は「int型のポインタの占めるサイズ」を返します。
そもそもこれ、
そもそも
```C
int noname(char* str) {
   ...
}
int main() {
 char[] str = "ABCDE";
 char* str2 = "12345";
 printf("sizeof(str)=%d\n", sizeof(str));
 printf("sizeof(str2)=%d\n", sizeof(str2));
```
でないと変でしょう。
をやると、
```
sizeof(str)=6
sizeof(str2)=4
```
と出てきますね。つまりは int noname() に対しては、どうにかして「配列全体」を渡してやらないと意図したような動きはしてくれないのです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る