質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

4回答

2549閲覧

char 変数名 [数字]がわからない

mercurian-teto

総合スコア75

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/08/21 03:40

編集2018/08/21 09:53

下のコードを見る限りchar str [32]のscanfの部分で&が指定されていません。

int* a ; scanf("%d",a);

scanfに変数を代入する場合、変数のアドレスを渡すもので、
ポインタ変数の場合、アドレスは変数名の*をとっぱっらたものをを代入するものだったはずですが、これを念頭に置いて真下のコードを見てみると、

char変数名[数字]はポインタ変数?だと思ったのですが、実際
char変数名[数字]はポインタ変数なんでしょうか。

また、
[]の中に入っている数字、char str[32];の32は何を意味しますか。

回答お願いします。

//例 構造体へのアクセス #include <stdio.h> int main(void) { struct { int i; double d; char c; char str[32]; } kouzoutai; printf("整数を入力してください。:"); scanf("%d", &kouzoutai.i); // 整数入力を kouzoutai.i に格納する。 printf("浮動小数点数を入力してください。:"); scanf("%lf", &kouzoutai.d); // 浮動小数点数入力を kouzoutai.d に格納する。 printf("文字(半角1文字)を入力してください。:"); scanf(" %c", &kouzoutai.c); // 文字入力を kouzoutai.c に格納する。 printf("文字列(半角31文字、全角15文字まで)を入力してください。:"); scanf("%31s", kouzoutai.str); // 文字列入力を kouzoutai.str に格納する。 printf("kouzoutaiのメンバの値は、%d %f %c %sです。\n", kouzoutai.i, kouzoutai.d, kouzoutai.c, kouzoutai.str); } //以下省略

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

char str[32];の32は何を意味しますか。

[]で配列を定義していて、32は要素数を表しています。
これがわかっていないのに先に進むと理解が追いつかず、ただただ混乱するだけだと思うので、ポインタだのscanfだのは置いておいて、基礎からやり直したほうがいいと思います。
なので他の解説はしません。

投稿2018/08/21 04:39

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

配列は3つの例外を除き常にポインタに読み替えられます。

つまり実質的には、配列とは単にメモリー確保手段に過ぎません。

char str[32];

この場合char型で32個分の連続したメモリーを確保します。

//int nums[4];//メモリー確保 int nums[4] = { 0 };//メモリー確保&0うめ //nums[1] = 4;//[]演算子はシンタックスシュガー *(nums + 1) = 4;//このポインタ演算と等価

追記:

よく考えたら昔この話題についてQiitaに記事を書いていたのでリンクを張っておきますね
Re:Cのポインタと配列の関係について考察してみる

投稿2018/08/21 03:49

編集2018/10/13 04:18
yumetodo

総合スコア5850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

char変数名[数字]はポインタ変数なんでしょうか。

『char変数名[数字]と書いたときに、「変数名」はポインタ変数なんでしょうか。 』
という質問だとして、回答すると、
違います。ポインタ変数ではありません。配列変数名です。「変数名」自体は変数じゃないので、それに代入は出来ません。

後ろに添え字を書かない「変数名」だけを書いた場合は、配列変数の先頭アドレスを表します。

char str[32];の32は何を意味しますか。

これが分からないということだと、まだCに入門しかけている途中でしょうか。ポインタの前に学ぶべき事です。

32は配列のサイズを表しています。文字列は、文字の並びの末尾に'\0'を付けた物なので、文字列としては('\0'の分を除いた)31文字まで入ります。

投稿2018/08/21 03:54

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

char変数名[数字]はポインタ変数?だと思ったのですが、実際

char変数名[数字]はポインタ変数なんでしょうか。

配列です。
式として評価する文脈では、先頭要素のポインタに読み替えられます。

[]の中に入っている数字、char str[32];の32は何を意味しますか。

配列の要素数です。

投稿2018/08/21 03:46

LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問