这是什么意思:struct word * nowhead = head [string [start - 'a']];

时间:2013-09-11 23:29:33

标签: c algorithm

从下面的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);
 }

2 个答案:

答案 0 :(得分:2)

您还没有显示足够的上下文代码,但标记的行只是使用另一个数组中找到的索引访问数组。您可以将其分解为两个操作:

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

答案 1 :(得分:0)

这意味着将指针现在设置为嵌套数组中的值减去char'a'的值