1

以下のCコードから、私は理解できません

struct word *nowhead = head[string[start - 'a']];  

これを説明してください。

struct word **head=NULL;
char string[16384];
start = 0;
...

void insert(char *string, int end, int start)
{
    struct word *nowhead = head[string[start - 'a']]; //this!!
    ...
}

ありがとう。

更新 (コメントから)

void insert(char *string, int end, int start)
{
struct word *nowhead = head[string[start- 'a']];
int i, j=0, on=0;
char *wtemp;
struct word *temp1, *temp2;

wtemp= calloc(PAROLA, sizeof(char));
if(wtemp==NULL) printf("Error \n");
for(i=start; i<end; i++) {
  wtemp[j]=string[i]; j++;
  }

if(nowhead != NULL) {
  temp1=nowhead ;
  while(temp1!=NULL) {
    if(strncmp(wtemp, temp1->parol, (PAROLA-1))== 0) {
      temp1->occorrenz++; on=1; break;
    }
    else {
      if(temp1->next == NULL) {
        temp2=temp1; }
      } temp1=temp1->next;
    }
  if(on!=1) {
    temp1=malloc(sizeof(struct word));
    strncpy((temp1->parola), wtemp, (PAROLA-1));
    temp1->next = NULL;
    temp1->occorrenze=1;
    temp2->next=temp1; }
  } else {
    nowhead= malloc(sizeof(struct word));
    strncpy((nowhead->parola), wtemp, PAROLA);
    nowhead->next=NULL; nowhead->occorrenz=1;
  }
 free(wtemp);
 }
4

2 に答える 2

2

コンテキストに十分なコードを示していませんが、マークされた行は、別の配列で見つかったインデックスを使用して配列にアクセスしているだけです。次の 2 つの操作に分けることができます。

char headIndex = string[start - 'a'];
struct word *nowhead = head[headIndex];
于 2013-09-11T23:31:53.720 に答える
0

これは、ポインター nowhead を、入れ子になった配列の値から char 'a' の値を引いた値に設定することを意味します。

于 2013-09-11T23:33:38.497 に答える