c語言結構體以及結構體指針的使用


結構體:

正常定義一個結構體:

typedef  struct node{
    char ch[10];
    int len;
}Seq,*llink;

定義結構體指針:

Seq *s;
或者
llink t;
之后關於s與t的用法,其實完全一樣,只是在定義時不同,Seq *就相當於llink了

 

以為定義完指針以后就可以使用了嗎?
NO!

需要為指針申請空間才能正常使用,否則會在輸入這里出現很多莫名其妙的錯誤!親測如此
需要添加庫:

#include<stdlib.h>

s = (struct node *)malloc(sizeof(struct node));
t = (struct node *)malloc(sizeof(struct node));

輸入數據:
scanf("%d",&s->len);
這時候輸入數據就可以正常使用了
輸入整型數據需要加&
輸入字符數據:scanf("%s",s->ch);
不需要添加&

輸出數據:
printf("%d",s->len);
或者
printf("%d",(*s).len);
輸出字符串數據:
printf("%s",s->ch);
或者
printf("%s",(*s).ch);


釋放空間:
free(s);

 

額外的補充一下指針:
!!!!!!!!!!!!!!!!!注意!!!!!!!!!!!!!!!!!!!!!
·在使用任何定義的指針時一定需要申請內存才能正常使用

·使用指針不能直接使用++或者--

eg:int *n;
*n = 4;
*n--; //此處為錯誤用法
*n -= 1; //此處為正確用法

如果使用*n--,減去的是地址的大小,系統操作:*(n--)

很明顯是應該值變化,而不是地址變化


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM