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

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

ただいまの
回答率

89.11%

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

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,082

mercurian-teto

score 75

下のコードを見る限り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);
}

//以下省略
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+3

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+2

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

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

char str[32];

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

//int nums[4];//メモリー確保
int nums[4] = { 0 };//メモリー確保&0うめ

//nums[1] = 4;//[]演算子はシンタックスシュガー
*(nums + 1) = 4;//このポインタ演算と等価

追記:

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

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

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

配列の要素数です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

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

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 89.11%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる