配列についてご教授ください

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
nama

配列についてご教授ください

#1

投稿記事 by nama » 9年前

配列の先頭要素はアドレスですよね、そこはなんとなくわかってます。
ところで以下の文
#include <stdio.h>
int main(){
int i;
char str[5];
for(i=0;i<5;i++){
scanf("%s", str);
}

printf("%s", str);
return 0;
}

はエラーを吐かれます。scanf関数はアドレスを渡しているのでstrでいいのかと思ったのですがそれは早計だったようで、&strをつけたら無事コンパイルが通り実行できました。なぜstrではエラーなのでしょうか?また、&strとすることでscanf関数に何を渡しているのでしょうか?
初歩的な質問ですが、ご教授ください。

アバター
Tatu
記事: 445
登録日時: 13年前
住所: 北海道

Re: 配列についてご教授ください

#2

投稿記事 by Tatu » 9年前

配列の先頭要素str[0]にはアドレスではなく、char型の値が入っています。
配列の先頭以外の要素に入っているのもアドレスではなく、char型の値です。

配列の名前strだけを書いた場合は配列の先頭要素のアドレスを指します(strでも&str[0]でも同じ)

&strでは配列strのi番目の要素のアドレスを指します。

文字列をscanfで入力し、printfで出力するだけならこれでよいでしょう。

コード:

#include <stdio.h>
int main(){
	char str[5];
	scanf("%s",str);
	printf("%s",str);
	return 0;
}

nama

Re: 配列についてご教授ください

#3

投稿記事 by nama » 9年前

Goooooooooooood !!!
簡潔でわかりやすい説明ありがとうございました。
スッキリしましたよ

閉鎖

“C言語何でも質問掲示板” へ戻る