#include <stdio.h>
#include <stdlib.h>
main()
{
typedef struct
{
int info;
struct strc* next_ptr;
}strc;
strc* strcVar[5];
strcVar = malloc(sizeof(strc) * 5);
strcVar[0]->info = 1;
printf(" All is well ");
}
質問する
101 次
6 に答える
2
変化する
strc* strcVar[5];
に
strc* strcVar;
strcVar = malloc(sizeof(strc) * 5);
strcVar[0].info = 1;
また
変化する
strc* strcVar[5];
strcVar = malloc(sizeof(strc) * 5);
strcVar[0]->info = 1;
に
strc strcVar[5];
strcVar[0].info = 1;
于 2013-02-12T13:37:45.920 に答える
2
strcVar
は (ローカル) 配列名であるため、ポインターを割り当てることはできません。あなたはおそらく望んでいた:
strc* strcVar;
... /* and later */
strcVar[0].info = 1;
へのポインターの配列が必要な場合は、struct strc
Vaughn Cato の回答が役立ちます。
于 2013-02-12T13:34:44.020 に答える
2
この行は間違っていて不必要です:
strcVar = malloc(sizeof(strc) * 5);
代わりに、次を使用できます。
{
int i=0;
for (;i!=5; ++i) {
strcVar[i] = malloc(sizeof(strc));
}
}
于 2013-02-12T13:34:44.357 に答える
2
から配列を割り当てることはできませんmalloc
-それはどちらかです。5 つのポインターの配列を宣言した場合、それらのメモリは既に割り当てられています。を使用する必要がある場合malloc
は、配列の代わりにポインタへのポインタを使用してください。malloc
それ以外の場合は、個々の項目を配列ではなくで割り当てます。
strc* strcVar[5];
strcVar[0] = malloc(sizeof(strc));
于 2013-02-12T13:35:11.613 に答える
1
修正コード:
#include<stdio.h>
#include<stdlib.h>
void main()
{
typedef struct
{
int info;
struct strc* next_ptr;
}strc;
strc* strcVar;
strcVar = malloc(sizeof(strc) * 5);
strcVar[0].info = 1;
printf(" All is well ");
}
于 2013-02-12T13:37:31.253 に答える
0
どの配列でも、ベース アドレスは const ポインターです。変更することはできません。
int a[5]; があるとします。
ここで、a は配列全体への基本ポインターであり、変更することはできません。
これはすべてのアレイに適用されます。
于 2013-02-12T15:37:55.633 に答える