0

こんにちは、私は多かれ少なかれ C に慣れていません。構造体と共用体の使用方法を学習しているときに、次のエラーを受け取りました:「';' の前に式が必要です」token" 長い間エラーを探していましたが、見つかりません。私が尋ねるのは、次のコードで必要な修正だけです。

Mac OS X で Gnu C コンパイラを使用しています

#include <stdio.h>;
#include <stdlib.h>;

struct lista;
struct elemento;
union member{
  int i;
  struct lista * n;};

struct elemento{
  union member * v;
  struct elemento * n;};

struct lista{
  int len;
  struct elemento * n;};

void append(struct lista* a , union member * e);

int main(void){
  return 0;}

void append(struct lista * a , union member * e){
  struct elemento ** j= ((*a).n)*;                    /* error here */
  int c;
  for(c=0;c<(*a).len;c++){
    j=((**j).n)* ;}                                   /* error here */
  (*a).len++;
  *j=(struct elemento *)malloc(sizeof(struct elemento));
  (**j).v=e;}

コードの 24 行目と 28 行目で 2 つのエラーが発生します。助けてください

4

4 に答える 4

5
struct elemento ** j= ((*a).n)*;   // 24th line

これを試して -

struct elemento ** j= & ((*a).n); // Note the removal of * and adding & symbol before.

jはポインタへのポインタなので、シンボルを追加する必要があります&

于 2012-08-01T17:09:07.210 に答える
0

セミコロンの直前の星は間違っています。何が良いと思ったのかわかりませんが、削除する必要があります。

于 2012-08-01T17:10:46.383 に答える
0

ここに問題があります

 for(c=0;c<(*a).len;c++) {
     j=((**j).n)* ;}
                ^
                ^

それを取り除く*

于 2012-08-01T17:10:49.577 に答える
0
void append(struct lista * a , union member * e){
  struct elemento ** j= ((*a).n)*;

セミコロンの前にぶら下がっているアスタリスクがあります。それを削除する必要があります:

void append(struct lista * a , union member * e){
  struct elemento ** j= ((*a).n);

この問題のもう 1 つの発生は、for ループの内部です (Dennis Meng に感謝します)。


トピック外: の後にセミコロンは必要ありません#include:

#include <stdio.h>
#include <stdlib.h>
于 2012-08-01T17:08:29.317 に答える