Доступ к переменным указателя в структуре - PullRequest
2 голосов
/ 12 мая 2011
#define SIZE 9

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

Кто-нибудь может сказать мне, как получить доступ к "хвосту" и "голове"?Использование переменной gsm (gsm следует использовать как структурную переменную, а не как указатель).

Ответы [ 2 ]

4 голосов
/ 12 мая 2011
#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 голосов
/ 12 мая 2011
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...