开发者

Accessing pointer variables in a structure

开发者 https://www.devze.com 2023-03-05 03:11 出处:网络
#define SIZE 9 struct circ_buff{ char buff[SIZE]; int total = 0; char *tail; char *head; } gsm; Can anybody tell me how to access \"tail\" & \"head\"? Using the variable gsm (gsm should be use
#define SIZE 9

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

Can anybody tell me how to access "tail" & "head"? Using the variable gsm (gsm should be used as struct variable not as a pointer开发者_Go百科).


#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;
}


gsm.tail[INDEX]

or

*(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);
}

output:

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

精彩评论

暂无评论...
验证码 换一张
取 消