日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对C语言 结构数组 指向结构变量的指针 指向结构数组的指针

發布時間:2025/10/17 编程问答 10 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对C语言 结构数组 指向结构变量的指针 指向结构数组的指针 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、結構數組的定義

數組的元素可以是結構類型的。結構數組的每一個元素都是具有相同的結構類型的下標結構變量。在實際應用中,經常用結構數組來表示具有相同數據結構的一個群體。

如:一個班的學生的檔案,一個車間職工的工資等。

struct stu{Int num;char *name;char sex[20];float score;}boy[5];

定義了一個結構數組boy,共有5個元素,boy[0]~boy[4].每個數組元素都有struct stu的結構形式。對數組結構可以做初始化賦值。

#include<stdio.h> struct stu {int num;char *name;char sex;float score; }boy[5] = {{101,"shi",'w',46},{102,"wen",'m',76},{103,"jie",'w',89.8},{104,"jier",'m',25},{105,"dada",'w',65},}; int main(int argc,char **argv) {int i;int c=0;float ave;float s = 0;for(i=0;i<5;i++) {s += boy[i].score;if (boy[i].score < 60){c+=1;}printf("num=%d,name=%s,sex=%c,score=%2.f\n",boy[i].num,boy[i].name,boy[i].sex,boy[i].score);}printf("s=%f\n",s);ave = s/5;printf("ave=%f\ncount=%d\n",ave,c);return 0; }

本例程序中定義了一個外部結構數組boy,總共5個元素,并做了初始化賦值。在main函數中用for語句逐漸累加各個元素的score,成員值存于s之中,如score的值小于60(不及格)即計數器C加1,循環完畢后計算平均成績,并輸出全班總分,平均分以及不及格人數。

二、指向結構變量的指針

一個指針變量當用來指向一個結構變量時,稱之為結構指針變量。結構指針變量的值指向的是結構變量的首地址。

通過結構指針即可訪問該結構變量。

結構指針變量的說明一般的格式為: ? ?

? ? ? ? Struct stu *pstu;

訪問的一般形式為:

結構指針變量->成員名

例如:(*pstu).num;

或者是:

Pstu->num;

/*

結構指針變量的具體說明和使用方法

*/

/*

本例程序中定義了一個結構體stu,定義了類型結構變量boy1并做了初始化賦值,還定義了一個指向stu類型結構的指針變量pstu。在main函數中,pstu被賦予boy1的地址,因此pstu指向boy1,。然后在printf語句中用三種形式的輸出boy1的各個成員值。

從運算結果可以看出:

結構變量.成員名

(*結構指針變量).成員名

結構指針變量->成員名

*/

#include<stdio.h> struct stu {int num;char name[20];char sex;float score; }boy1 = {102,"shi wen jie",'w',48},*pstu; int main(int argc,char **argv) {pstu = &boy1;printf("num=%d\t,name=%s\t,sex=%c\t,score=%f\n",boy1.num,boy1.name,boy1.sex,boy1.score);printf("num=%d\t,name=%s\t,sex=%c\t,score=%f\n",(*pstu).num,(*pstu).name,(*pstu).sex,(*pstu).score);printf("num=%d\t,name=%s\t,sex=%c\t,score=%f\n",pstu->num,pstu->name,pstu->sex,pstu->score);return 0; }

三、指向結構數組的指針

指針變量可以指向一個結構數組,這時結構指針變量的值是整個結構數組的首地址。結構指針變量也可以指向結構數組的一個元素,這時的結構指針變量的值是該結構數組元素的首地址。

***ps為指向結構數組的指針變量,則ps也是指向該結構數組的0號元素,ps+1指向1號元素,ps+i則指向i號元素。

/*

在程序中定義了stu結構類型的外部數組boy并做了初始化賦值。在main中定義了ps為指向stu類型的指針。在循環語句for的表達式1中,ps被賦予boy的首地址,然后循環5次,輸出boy中數組中的成員值。

*/

/* 用指針變量輸出結構數組 */ #include<stdio.h> struct stu {int num;char name[8];char sex;float score; }boy[5] = {{101,"shi",'w',65},{102,"wen",'m',89},{103,"jie",'w',86}, {104,"jie jie",'m',70},{105,"hi",'m',76},}; int main(int argc,char **argv) {struct stu *ps;printf("num\tname\tsex\tscore\n");for(ps=boy;ps<boy+5;ps++){printf("%d\t%s\t%c\t%f\n",ps->num,ps->name,ps->sex,ps->score);}return 0; }

***可以看出?結構指針變量可以訪問結構變量或結構數組元素的成員,但是不能使他指向一個成員。也就是說,不允許取一個成員的地址來賦予它。

錯誤的:ps ?= ?&boy[1].sex;

正確的:ps ?= boy;(賦予數組首地址) ?????ps = &boy[0];(賦予0號元素首地址)

總結

以上是生活随笔為你收集整理的对C语言 结构数组 指向结构变量的指针 指向结构数组的指针的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。