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

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

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

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

ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。

Q&A

3回答

715閲覧

Cの構造体におけるポインタ宣言について

yorha0005

総合スコア14

C

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

ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。

0グッド

0クリップ

投稿2019/06/10 09:57

c言語について、ほぼ初心者のためお伺いいたします。

typedef stract { int member1; char memstr2[2]; }SAMPLE;

のような構造体があったとき、

SAMPLE *[i]

SAMPLE *

という書き方があった場合、この二つはいったいどのような状態?を表していて、何が違うのでしょうか。
(iには適当な数値が入っているとします)

ご回答いただけましたら宜しくお願いいたします。

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

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

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

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

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

cateye

2019/06/10 10:34

>という書き方があった場合・・・・・ありません。 まずCの構文をしっかり勉強しましょう。 適当にmain()を作って、上記コードを記述してコンパイルしてみましょう。
guest

回答3

0

ありがとうございます。

基本情報の問題にこのような書き方があったので、よくわかりませんでした。
https://www.fe-siken.com/kakomon/23_toku/pm09.html

リンク先のコードにある関数プロトタイプの

c

1void check_seats(char, int, SEAT *[ROWNUM], POSITION *);

のことでしょうか。
他の引数を見てもらうとわかると思いますが、単に引数名が省略されているだけです。
関数プロトタイプでは引数名を省略しても良いことになっているので、ここでは引数名を省略した書き方になっているだけです。関数定義の方を見れば

C

1void check_seats(char class, int num, SEAT *hall[ROWNUM], POSITION *pos) { 2 : 3 : 4

となっています。これと同じことです。

投稿2019/06/10 12:24

KoichiSugiyama

総合スコア3041

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

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

0

もしかして、

void check_seats(char int, SEAT *[ROWNUM], POSITION *);

の記述の事でしょうか?
これは、次の

void check_seats(char class, int num, SEAT *hall[ROWNUM], POSITION *pos)

から、仮引数を省略した、関数宣言ですね。

SEAT *[ROWNUM] は、SEAT[][ROWNUM] となる 2次元配列(列サイズが、ROWNUM)へのポインタを示しています。 POSITION *は、POSITION[] の1次元配列へのポインタを示します。

Cの場合、関数の引数としては、1次元配列とポインタは区別しません。また、関数の宣言としては、仮引数は必要としないので、指摘の表現となっていると思います。

あと、質問文の typedef stractは、 typedef struct の誤りですね。

こんなところで、良いでしょうか?

投稿2019/06/10 12:23

編集2019/06/10 15:05
pepperleaf

総合スコア6383

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

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

pepperleaf

2019/06/10 15:06

> ttypedef・・・ あ、恥ずかしい、、、他に無いか、心配だけど、とりあえず訂正。
keicha_hrs

2019/06/10 22:36

typoは誰にでもあるので仕方ないと思いますが、誤りの指摘が誤っているのはちょっとと思ったので口を出させていただき、失礼しました。
guest

0

SAMPLE *[i]

のような書き方はありません

SAMPLE* a;

というのであれば、SAMPLEのポインタ型の宣言となります

また、
SAMPLE i[1];

は、SAMPLEの要素が一つの配列宣言となります

投稿2019/06/10 10:53

y_waiwai

総合スコア87774

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問