前提・実現したいこと
『新・明解C言語 中級編』を写経しています。
サンプルコードの中で理解できないところがありました。
①
char (p)[15];
→ポインタpを先頭としてサイズ15で文字型の配列を確保している??
②
p = (char ()[15])malloc(num * 15);
→(char (*)[15])とは、何型にキャストしてるの??
何だか分かるような分からないようなでモヤモヤしています。
どなたか教えてくださると嬉しいです。
該当のソースコード
C
1/* 文字列の配列を動的に確保(2次元配列) */ 2# include <stdio.h> 3# include <stdlib.h> 4 5int main(void) 6{ 7 int num; 8 char (*p)[15]; /* ??? */ 9 10 printf("文字列は何個:"); 11 scanf("%d", &num); 12 13 p = (char (*)[15])malloc(num * 15); /* ??? */ 14 if (p == NULL) 15 puts("記憶域の確保に失敗しました。"); 16 else { 17 int i; 18 for (i = 0; i < num; i++) { 19 printf("p[%d]:", i); 20 scanf("%s", p[i]); 21 } 22 for (i = 0; i < num; i++) 23 printf("p[%d] = %s\n", i, p[i]); 24 free(p); 25 } 26 return 0; 27}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/23 08:04