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

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

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

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

Q&A

解決済

2回答

1388閲覧

malloc で Queueのメモリを確保したい

pokemonta

総合スコア170

C

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

0グッド

0クリップ

投稿2021/05/11 06:13

構造体を定義してbuffに対して
キューイングしていきたいのですが
以下のエラーが発生してうまく処理できません。
** error: ‘que’ undeclared (first use in this function)**
対応方法をご教示願います。

c

1struct kozotai { 2 char *buff; 3}; 4 5 6struct kozotai *constructor() 7{ 8 struct kozotai Queue; 9 Queue *que = malloc(sizeof(Queue)); 10 return que; 11}

リンク内容

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

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

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

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

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

dodox86

2021/05/11 08:29

参考にされているサイトの記載内容を順番にちゃんと理解されていますか? 記事によるとQueueはもともと、構造体をtypedefしたものとして話を進めています。
pokemonta

2021/05/11 11:32 編集

typedefを使わずに同じことができると考えてます。別名をどこで定義するかの違いだと
guest

回答2

0

ベストアンサー

C

1#include <stdlib.h> 2 3struct kozotai { 4 char* buff; 5}; 6 7struct kozotai* constructor() { 8 typedef struct kozotai Queue; 9 Queue* que = (Queue*)malloc(sizeof(Queue)); 10 return que; 11}

投稿2021/05/11 11:43

編集2021/05/11 11:47
episteme

総合スコア16614

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

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

pokemonta

2021/05/11 12:08

typedefやキャストが必要なんですか。
kaina

2021/05/11 13:03

typedefが何をやるのか理解出来ていないからそんな間抜けな質問が出る。 epistemeさんはあえてあなたの質問のコードを使った、最低限の変更を加えた 回答しているんですよ。
episteme

2021/05/11 13:32

> typedefやキャストが必要なんですか。 コレ↓で十分なハズよ。 struct kozotai* constructor() { return malloc(sizeof(struct kozotai)); }
pokemonta

2021/05/11 14:08

kozotaiを型として扱いたいからtypedefを使っているんですね。 最終的にはbuffに対してもmallocしたいのですが(リンク先のように)その前になぜ(sizeof(Queue))にmallocが必要なんでしょか?リンク先でも2回mallocしてます
episteme

2021/05/11 15:06 編集

テイクアウトのカレー(=buff)と同じです。「容器(=struct kozotai)は別売」なんですよ。 容器を自前で用意すればカレーだけ売ってくれます。 struct kozotai que; que.buff = malloc(32); // 32-byte の領域。
pokemonta

2021/05/12 00:03 編集

わかりやすい例えですね カレーより容器が大きくないとだめなんですね
episteme

2021/05/12 06:37

解決したんならcloseしてください。
guest

0

C

1struct kozotai Queue;

なので、この時点で Queue は「変数」(struct kozotai 型の)として宣言されています。
ということは、

C

1Queue *que

Queue は型ではなく変数なのですから、これだと Queue * que とか、少なくとも意図した解釈にはなりません。
そうすると que は宣言無しに使用していますから、

error: 'que' undeclared

になるでしょうね。

投稿2021/05/11 06:25

tacsheaven

総合スコア13703

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問