當前位置:首頁 » 編程語言 » 結構體指針c語言

結構體指針c語言

發布時間: 2023-02-03 09:58:04

c語言結構體指針如何定義和使用

struct stu
{
char name[20];
long number;
float score[4];
} ;
再定義指向結構體類型變數的指針變數:
struct stu *p1, *p2 ;
定義指針變數p 1、p 2,分別指向結構體類型變數。引用形式為:指針變數→成員;

❷ C語言指向結構體的指針


  1. C語言中的結構體
    在C語言中,結構體(struct)指的是一種數據結構,是C語言中聚合數據類型(aggregate data type)的一類。結構體可以被聲明為變數、指針或數組等,用以實現較復雜的數據結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問

  2. 定義與聲明
    結構體的定義如下所示,struct為結構體關鍵字,tag為結構體的標志,member-list為結構體成員列表,其必須列出其所有成員;variable-list為此結構體聲明的變數。

  3. 結構體成員的引用

    有兩種方式,英文的句點 . ,一個減號加一個大於號 ->。

    當結構體是一個指針時要引用結構體的成員就用-> 而如果不是指針就用.。

    如:
    struct msg_st {
    int a;
    };
    struct msg_st msg;
    struct msg_st *ms;
    msg.a = 10;
    ms->a = 20;




❸ c語言 結構體指針

struct node next;只有一個實體next,雖然寫在循環里,但編譯時就提前到前面合適的地方去了,所以循環只操作了一個next!

❹ C語言 結構體指針

孩子,你這個代碼很多錯誤。

1 編譯錯誤:result=(studentarr+6);地址賦值給結構體對象?

2 scanf("%s,%s,%s,%s,%c,%d",STU[i].name,STU[i].surname,STU[i].UUN,STU[i].department,&STU[i],每個變數前都要加&

3 printf("%s %s %s %s %c %d",findOldest.name,findOldest.surname,findOldest.UUN,findOldest.department,findOldest.gender,findOldest.age);函數名稱的變數?錯了吧?

4 嚴重錯誤:結構體中如:name這種char*根本存不下scanf輸入的字元串的,需要把所有char*改成char數組

5 for(i=3;i<6;i++){ scanf ...}這種貌似可能搞不定的,沒法多次循環輸入多次,這點哥也不確定。

最後附上簡單修改的代碼,我沒時間,沒幫你改涉及scanf的部分。

#include <stdlib.h>
#include <stdio.h>
typedef struct{
char* name;
char* surname;
char* UUN;
char* department;
char gender;
int age;
}student_t;

student_t* findOldest(student_t *studentarr){
//student_t temp;
int olderAge;
int sequence;
//student_t result;
int i;
sequence = 0;
olderAge = studentarr->age;
for(i=1;i<3;i++)
{
//if(studentarr->age > (studentarr+1)->age){
// temp=*(studentarr+i);
// *(studentarr+i)=*(studentarr+1+i);
// *(studentarr+i+1)=temp;
//}
printf("age[%d]\n", studentarr[i].age);
if(olderAge < studentarr[i].age)
{
olderAge = studentarr[i].age;
sequence = i;
printf("sequence[%d]\n", sequence);
}
}
//result = *(studentarr+6);
//return result;
return (studentarr+sequence);
}
int main() {
/* BEGIN ANSWER */
student_t STU[3]={
{"John","Bidhop","d1234","Inf",'m',20},
{"Lady","Cook","s2345","Eng",'f',17},
{"James","Jackson","s3456","Eng",'m',19}
};
int i;
//for(i=3;i<6;i++){
//printf("please type the data of students\n");
// printf("name,surname,UUN,department,gender,age\n");
// scanf("%s,%s,%s,%s,%c,%d",STU[i].name,STU[i].surname,STU[i].UUN,STU[i].department,&STU[i].gender,&STU[i].age);
//}
student_t *stu=STU;
student_t* oldest = findOldest(stu);
printf("%s %s %s %s %c %d\n",oldest->name,oldest->surname,oldest->UUN,oldest->department,oldest->gender,oldest->age);
/* END ANSWER */
return EXIT_SUCCESS;
}

❺ C語言結構體指針

->的優先順序高於++,

所以++pt–>x,是把x的值加1

❻ C語言的結構體及指針

結構體就像數組一樣,其中的數據是有互相聯系的,有些情況下定義一些簡單的變數是不能反映出數據之間的內在聯系,所以我們就把這些數據組合成一個項,而這個項中包含著很多不同的數據項,這就是結構體。
簡單理解下,就是說把一些有內在聯系的不同變數放在一起封裝成一個整體,這就是結構體。

指針,其實就是一個存放地址的變數,指針可以指向變數,數組,結構體等數據所在的內存單元。
指針就是用來通過地址去找數據的,只要你把該數據的地址給指針,那麼當你用到指向這個數據的指針時就等於在使用該數據。

❼ c語言結構體指針

既然已經聲明了結構體指針,那麼編譯器就會認為這個指針指向的對象符合你所給出的結構體的構成,因此順著地址摸過去再按照結構體解析。
比方說,給你個203房間的鑰匙,雖然你並不清楚203房間具體的位置,但是你也會知道房間里至少有床可供休息、有廁所可供便溺,當你恰好有便意的時候就會找到203房間去上廁所……

❽ c語言指針和結構體

樓主你好:
for(i=cnt;i>0;i--)
{/*P為臨時結構體指針*/
p=(struct linklist *)malloc(sizeof(linklist));
scanf("%s%s%d",p->sno,p->sname,&p->sgrade);
p->next=ps->next;
ps->next=p;
}
你仔細看一下你的這段代碼。
第一次循環的時候,p指向ps指向的地址,然後ps指向p,這樣的結果是:ps--->p---->p->next
然後下一次循環,ps->next現在是p,你執行了「p->next=ps->next」那麼p指向了p自己。。。而ps指向了p。在以後的循環中無法改變這一現象,從而造成了死循環,不知道你是不是能夠明白,推薦你畫一下圖,畫畫就明白了。

還有最後的那個for循環,終止條件改為p=p->next,這個應該是粗心了吧?

看起來你是初學c,c中聯表示比較難以理解的一部分,祝你好運,學業有成。

❾ C語言結構體指針的問題

語法規則允許這兩種等價的寫法,不過第一種是不是更美觀一些?

熱點內容
黨員e家賬號密碼是什麼 發布:2024-11-02 00:37:30 瀏覽:709
安卓微信後台怎麼關閉 發布:2024-11-02 00:36:49 瀏覽:719
s21更新了安卓12怎麼降級 發布:2024-11-02 00:35:11 瀏覽:99
編程要軟體嗎 發布:2024-11-02 00:34:59 瀏覽:235
androidcursor遍歷 發布:2024-11-02 00:27:40 瀏覽:767
網易我的世界地皮伺服器大全 發布:2024-11-02 00:24:20 瀏覽:964
光宇國際服怎麼安卓轉ios 發布:2024-11-02 00:14:23 瀏覽:170
魔獸世界單機資料庫 發布:2024-11-01 23:37:11 瀏覽:698
配置vlan後如何配置電腦ip 發布:2024-11-01 23:21:16 瀏覽:546
中鐵盾構機密碼是多少 發布:2024-11-01 23:07:21 瀏覽:708