2011-05-12 173 views
2
#define SIZE 9 

struct circ_buff{ 
    char buff[SIZE]; 
    int total = 0; 
    char *tail; 
    char *head; 
} gsm; 

有人能告诉我如何访问“尾部”&“头部”?使用变量gsm(gsm应该用作结构变量而不是指针)。在结构中访问指针变量

回答

4
#define SIZE 9 
struct circ_buff{ 
    char buff[SIZE]; 
    int total; /* you can't initialize this here */ 
    char *tail; 
    char *head; 
} gsm; 

int main() { 
    gsm.total = 0; 
    /* it looks like you're writing a circular buffer, so... set head/tail to the 
    * start of the buffer 
    */ 
    gsm.tail = gsm.buff; 
    gsm.head = gsm.buff; 

/* 
    * gsm.head++;    // increment as you add to the buffer, don't 
    *        // forget to check for overflows 
    * 
    * // Other stuff you might want to do (assuming correct boundary checking) 
    * 
    * *gsm.head = 'G';   // set current head to 'G' 
    * 
    * printf("%c\n", *gsm.head); // print current value of head 
    * 
    */ 
    return 0; 
} 
+0

+1:对于一个很好的答案和对stru的基本目的的一个很好的猜测ct – 2011-05-12 09:05:34

+0

@Paul R:提醒我*方式*在我DOS时期的大部分键盘缓冲区中:) – forsvarir 2011-05-12 09:10:04

-1
gsm.tail[INDEX] 

*(gsm.tail) 


int main(int argc, char **argv) 
{ 
    #define SIZE 9 

    struct circ_buff{ 
      char buff[SIZE]; 
      int total; 
      char *tail; 
      char *head; 
    } gsm; 

    strcpy(gsm.buff, "ohaiohai"); 
    gsm.tail = gsm.buff; 
    gsm.head = gsm.buff; 

    printf("%s\n", gsm.buff); 
    printf("%s\n", gsm.tail); 
    printf("%s\n", gsm.head); 

    putchar(*(gsm.tail)); 
    putchar(gsm.head[1]); 

    exit(0); 
} 

输出:

$ gcc main.c && ./a.out 
ohaiohai 
ohaiohai 
ohaiohai 
oh 
+0

见更新我亲爱的朋友 – DipSwitch 2011-05-12 09:07:51

+0

这是一个进步 - -1删除 – 2011-05-12 09:10:26

+0

也许我应该下一次使用更多的解释:d – DipSwitch 2011-05-12 09:14:16