構造体を使用していますが、最大10個のポートを初期化します。しかし、プログラムが実行されているときは実行時間がそれほど多くない可能性があります。実行時まではわかりません。しかし、これは最大値になります。私は通常、callocとdelcareを使用してこの* portsを値の型として動的に割り当てているので、前にこのような構造体を作成したことはありません。構造体c動的にメモリを割り当てます
しかし、私は自由な店に割り当てられた2つのポートオブジェクトを指すポインタを1つ割り当てていますように、この
*ports[MAX_PORTS]. Am I creating 10 pointers that point to port objects?
そして
*ports = (struct port_t*) calloc(2, sizeof(*ports));
が見える理解できないのですか?
ドット演算子で矢印演算子を使用している理由を理解できません。 ports [0] - > port_id = 20;printf( "port_id:%d \ n"、ports [0] - > port_id);
struct port_t
{
int port_id;
char name;
} *ports;
ports = (struct port_t*) calloc(2, sizeof(*ports));
そして、以下、次のいずれかに割り当てる:私は合格でやっていることは通常
#include <stdio.h>
#include <stdlib.h>
#define MAX_PORTS 10
struct port_t
{
int port_id;
char name;
} *ports[MAX_PORTS];
int main(void)
{
*ports = (struct port_t*) calloc(2, sizeof(*ports));
ports[0]->port_id = 20;
printf("port_id: %d\n", ports[0]->port_id);
return 0;
}
は、これです。しかし、前のプログラマーは私がトップに表示したようなものを宣言しているので、何も変更できません。
ports[0].port_id = 10;
ports->port_id = 10;
任意の提案のための多くのおかげで、
compilierのGCCのC99 – ant2009