メモリ領域のことを勉強し始めて、メンバがchar[50],int priceの構造体Expenseを表示させたいのですが、最初の方に以下のようなコードを書いて、エラーを解決しようと模索しているうちに、頭がパンクしてしまい、以下のコードの意味もよくわからなくなってしまいました。
誰か初学者にもわかるようにコードの書き方を教えていただけませんか?
c
1コード 2#include<stdio.h> 3#include<string.h> 4#include<stdlib.h> 5 6typedef struct{ 7 char item[50]; 8 int price; 9} Expense; 10int main() { 11 // メモリの動的確保 12 int n; 13 Expense *a = (a*)malloc(n, sizeof(Expense)); 14 15 Expense product; 16 printf("名前 :"); scanf("%s", product.item); 17 printf("値段 :"); scanf("%d", &product.price); 18 19 // メモリの解放 20 free(a); 21}
c
1コンパイル結果 27-2.c: In function ‘main’: 37-2.c:12:21: error: expected expression before ‘)’ token 4 12 | Expense *a = (a*)malloc(n, sizeof(Expense)); 5 | ^
先生とか講師に相談してみては。
独学ならばメンターサービス等をご検討されては。
いくつもの過去の質問が回答をいただいているにも関わらず開いたままですが、ひとつひとつ理解して進めましょう。誰も回答してくれなくなりますよ。むしろ、なぜ今回のような質問が今になってされるのか謎です。
n が初期化されてません。
malloc の引数は一つです。(calloc なら二つですが。)
せつかく malloc したやつ使ってないんですが、何をしたいのでしょうか?
まあ処理の内容や関数の機能を調べたり理解したりせず、他人にデバッグして貰ってるだけだから、一生進歩しないわな。大人しく入門書からやり直しなさい。teratailは初心者相手に1から10まで丁寧に指導するサイトじゃないです。
[1-1. teratailはサポートセンターではなく、思考するエンジニアの為のQ&Aコミュニティです]
https://teratail.com/help/question-tips#questionTips1-1
> teratailを「サポートセンター」だとは思わないでください。
> 作業依頼のような投稿をして、課題や仕事を無償でやってもらえる場ではありません。
> あなたがそのようなつもりで質問しているのだと他のユーザーから誤解されないように、丁寧な質問を心がけましょう。
もしサイトのヘルプが読めないのであれば、まず国語の勉強からすることをお勧めします。
回答4件
あなたの回答
tips
プレビュー