C语言中,&结构体是什么操作呢

1. 结构体是什么?
数组是一个有顺序,并且类型相同的一组数据的集合,那么如果我们想把几个类型不同的数据放到一起怎么办呢?
数组是相同类型的多个变量绑到一起;结构体是不同类型的多个变量绑到一起。

比如:一个学生的 姓名、年龄、成绩,它们分别是由不同的数据类型组成,即姓名是字符串数据,年龄是整型数据,成绩是浮点型(小数)型数据。这个时候我们就可以使用结构体来实现。

2. 结构体怎么用?
2.1 定义结构体
语法
struct 结构体名{
成员列表;
};
1
2
3
结构体里面的成员定义方式与变量相同,也就是在结构体里面定义了多个变量。
例如,定义一个学生的结构体:

struct Student {
char name[32]; //姓名
int age; //年龄
float score; //成绩
};
1
2
3
4
5
2.2 定义结构体变量
struct Student student1;
1
以上就定义了一个Student类型的结构体变量student1,这个变量就可以代表一个学生,他拥有姓名、年龄、成绩这三个成员。

2.3 结构体成员引用
结构体不能进行整体的输入和输出,需要对成员分别操作,这称为结构体变量成员引用。
格式如下:

结构体变量名.成员名
1
在结构体变量名和成员中间有个英文的句号.。
例如:输入输出学生信息

#include
struct Student {
char name[32]; //姓名
int age; //年龄
float score; //成绩
};

int main(){
struct Student student1;
scanf("%s%d%f",&student1.name,&student1.age,&student1.score);
printf("姓名:%s\n年龄:%d\n分数:%0.1f\n",student1.name,student1.age,student1.score);
}
1
2
3
4
5
6
7
8
9
10
11
12
2.5 结构体成员赋值
结构体变量成员赋值就是给结构体内所有成员依次赋值。

struct Student student1;
struct Student student2;

strcpy(student1.name,"张三");
student1.age = 19;
student1.score = 90.5;

strcpy(student2.name,"李四");
student2.age = 18;
student2.score = 95.5;

printf("姓名\t年龄\t分数\n");
printf("%s\t%d\t%.1f\n",student1.name,student1.age,student1.score);
printf("%s\t%d\t%.1f\n",student2.name,student2.age,student2.score);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
注意:数值类型成员可以直接赋值,字符串类型变量需要使用字符串复制函数。

2.6 结构体赋值
结构体变量整体赋值就是给结构体所有成员一起赋值。

struct Student student1;
struct Student student2;

strcpy(student1.name,"张三");
student1.age = 19;
student1.score = 90.5;

student2 = student1;

printf("姓名\t年龄\t分数\n");
printf("%s\t%d\t%.1f\n",student1.name,student1.age,student1.score);
printf("%s\t%d\t%.1f\n",student2.name,student2.age,student2.score);
1
2
3
4
5
6
7
8
9
10
11
12
结构体能整体赋值,数组不能直接赋值。

2.7 结构体整体初始化
如果结构体变量直接初始化,操作更加简单。

struct Student student1 = {"张三",19,90.5};
struct Student student2 = {"李四",18,95.5};

printf("姓名\t年龄\t分数\n");
printf("%s\t%d\t%.1f\n",student1.name,student1.age,student1.score);
printf("%s\t%d\t%.1f\n",student2.name,student2.age,student2.score);

1
2
3
4
5
6
7
注意:赋值数据顺序必须与结构体成员声明顺序一致。

2.8 结构体部分初始化
结构体除了整体初始化外,也可以像下面部分初始化。

struct Point3D{
int x;
int y;
int z;
};
struct Point3D p = {.x=10,.z=20};
1
2
3
4
5
6
3. 其他语法
3.1定义结构体并同时定义结构体变量
struct Student{
char name[32]; //姓名
int age; //年龄
float score; //成绩
} student1,student2;
1
2
3
4
5
3.2 定义结构体并同时定义结构体变量并赋初值

  • c璇█涓%%鏄粈涔堟剰鎬?
    绛旓細鏄緭鍑%鍙枫%鏄浆涔夌銆%d 杈撳嚭鏁村瀷銆%nd 杈撳嚭鐨勬暣鍨嬪搴﹁嚦灏戜负n浣嶏紝鍙冲榻愶紝]鍗冲搴﹁嚦灏戜负5浣嶏紝浣嶆暟澶т簬5鍒欒緭鍑哄疄闄呬綅鏁帮紝%0nd 鐢ㄥ緱姣旇緝澶氾紝琛ㄧず杈撳嚭鐨勬暣鍨嬪搴﹁嚦灏戜负n浣嶏紝涓嶈冻n浣嶇敤0濉厖銆C璇█涓%鏈変袱绉嶆剰鎬濓紝绗竴琛ㄧず姹備綑绗﹀彿锛岀粡甯镐細鐢ㄥ埌鍒ゆ柇涓涓暟鏄笉鏄兘琚彟涓涓暣闄ゃ傚锛7%3=1锛...
  • c璇█涓鐨%2d鏄粈涔堟剰鎬?
    绛旓細C璇█涓鐨% 2d鏄痯rintf锛堬級鍑芥暟鐨勮緭鍑烘牸寮忎腑鐨%a.bf锛岃〃绀哄皢鏁板瓧鎸夊搴︿负2锛岄噰鐢ㄥ彸瀵归綈鏂瑰紡杈撳嚭锛岃嫢鏁版嵁浣嶆暟涓嶅埌2浣嶏紝鍒欏乏杈硅ˉ绌烘牸銆傚锛1銆佲%8d 鈥濊姹傝緭鍑哄搴︿负8锛岃宎鍊间负15鍙湁涓や綅鏁呰ˉ涓変釜绌烘牸銆2銆佲%6.3lf鈥濇寚瀹氳緭鍑哄搴︿负6锛岀簿搴︿负3锛岀敱浜庡疄闄呴暱搴﹁秴杩6鏁呭簲璇ユ寜瀹為檯浣嶆暟杈撳嚭锛屽皬鏁...
  • 鍦c璇█涓% d鏄粈涔堟剰鎬?
    绛旓細d 琛ㄧず鏈夌鍙峰崄杩涘埗鏁存暟锛 %c 琛ㄧず瀛楃銆傝繖涓绫荤鍙锋槸鈥滄牸寮忚鏄庘濈敤浜庢牸寮忚緭鍏ヤ笌鏍煎紡杈撳嚭锛屽氨鏄垜浠父瑙佺殑printf鍜宻canf鍑芥暟涓湪杈撳叆杈撳嚭鏃讹紝瀵逛笉鍚岀被鍨嬬殑鏁版嵁锛堝int,float,char绛夛級瑕佷娇鐢ㄤ笉鍚岀殑鏍煎紡璇存槑銆傚叾涓%d,鐢ㄦ潵杈撳嚭鍗佽繘鍒舵暣鏁%f,鐢ㄦ潵杈撳嚭瀹炴暟锛堝寘鎷崟锛屽弻绮惧害锛夛紝浠ュ皬鏁板舰寮忚緭鍑%c,鐢ㄦ潵杈撳嚭涓...
  • c璇█涓鐨%2d鏄〃绀轰粈涔?
    绛旓細C璇█涓鐨% 2d鏄痯rintf锛堬級鍑芥暟鐨勮緭鍑烘牸寮忎腑鐨%a.bf銆傝〃绀哄皢鏁板瓧鎸夊搴︿负2锛岄噰鐢ㄥ彸瀵归綈鏂瑰紡杈撳嚭锛岃嫢鏁版嵁浣嶆暟涓嶅埌2浣嶏紝鍒欏乏杈硅ˉ绌烘牸銆傚锛1銆佲%8d 鈥濊姹傝緭鍑哄搴︿负8锛岃宎鍊间负15鍙湁涓や綅鏁呰ˉ涓変釜绌烘牸銆2銆佲%6.3lf鈥濇寚瀹氳緭鍑哄搴︿负6锛岀簿搴︿负3锛岀敱浜庡疄闄呴暱搴﹁秴杩6鏁呭簲璇ユ寜瀹為檯浣嶆暟杈撳嚭锛屽皬鏁...
  • c璇█涓 ==, ++,--,[ ]鏄粈涔堟剰鎬
    绛旓細鑷1鐨勬剰鎬濓紝姣斿 int i=1; i++鍚巌鐨勫煎氨鍙樹负浜2銆傚彲浠ユ彁楂樼▼搴忕殑鏁堢巼锛岀紪璇戝櫒鍦ㄨ娉曠炕璇戠殑鏃跺欐渶缁堜細鐢ㄩ嗘尝鍏板紡鏉ヨ〃绀猴紝涔熷氨鏄炕璇戞垚x+=a鐨勫舰寮忋傛墍浠ヤ功鍐欑殑鏃跺欐妸x=x+a 鍐欐垚x+=a璇翠竴涓嬪師鐞嗭細x+=a绛変环浜 x=x+a銆
  • ->鍦C璇█涓鏄粈涔堟剰鎬?
    绛旓細->鍦C璇█涓紝鍙仛鎸囧悜缁撴瀯浣撴垚鍛樿繍绠楃锛岀敤澶勬槸浣跨敤涓涓寚鍚戠粨鏋勪綋鎴栧璞$殑鎸囬拡璁块棶鍏跺唴鎴愬憳銆備竴涓寚閽堝綋鐢ㄦ潵鎸囧悜涓涓粨鏋勪綋銆佸璞℃椂锛岀О涔嬩负缁撴瀯浣撴寚閽堟垨瀵硅薄鎸囬拡銆傜粨鏋勪綋鎸囬拡鎴栧璞℃寚閽堜腑鐨勫兼槸鎵鎸囧悜鐨勭粨鏋勪綋鎴栧璞$殑棣栧湴鍧銆傞氳繃缁撴瀯浣撴寚閽堟垨瀵硅薄鎸囬拡鍗冲彲璁块棶璇ョ粨鏋勪綋鎴栧璞°傛寚鍚戠粨鏋勪綋鎴愬憳杩愮畻绗...
  • C璇█涓% c鏄粈涔堟剰鎬?
    绛旓細s:杈撳叆杈撳嚭涓哄瓧绗︿覆 f:杈撳叆杈撳嚭涓烘诞鐐瑰瀷 printf( stream, "%s%c", s, c );s -- 鎵撳嵃鏍煎紡锛屾寜瀛楃涓叉柟寮忚緭鍑哄彉閲弒鐨勫硷紙瀛楃涓诧級鍒版枃浠舵祦stream c -- 鎵撳嵃鏍煎紡锛屾寜ASCII瀛楃鏂瑰紡杈撳嚭鍙橀噺c鐨勫(鍗虫墦鍗颁竴涓瓧绗︼級鍒版枃浠舵祦stream :鍦–++涓湁涓ょ鎰忔濓紝涓绉嶆槸鍙栧湴鍧绗︼紝鏄崟鐩繍绠楃锛涘彟涓绉...
  • c璇█涓% c鍜% d鐨勫尯鍒槸浠涔
    绛旓細C璇█杈撳嚭鏃剁殑%d鍜%c绛夐兘鏄牸寮忓寲瀛楃涓茬殑绾﹀畾锛%d琛ㄧず鏁村瀷鏍煎紡, %c琛ㄧず瀛楃鍨嬫牸寮忋傚父鐢ㄨ緭鍑烘牸寮忕被鍨嬶細%hd锛屽崄杩涘埗鏈夌鍙风煭鏁村瀷 d锛屽崄杩涘埗鏈夌鍙锋暣鍨 ld锛屽崄杩涘埗鏈夌鍙烽暱鏁村瀷 hu锛屽崄杩涘埗鏃犵鍙风煭鏁村瀷 u锛屽崄杩涘埗鏃犵鍙锋暣鍨 lu锛屽崄杩涘埗鏃犵鍙烽暱鏁村瀷 c锛屽瓧绗﹀瀷 s锛屽瓧绗︿覆鍨 f锛屽崄杩涘埗娴偣鍨 lf锛...
  • c璇█涓鐨"!"鏄粈涔堟剰鎬
    绛旓細c璇█涓鐨勨!鈥濇槸閫昏緫杩愮畻涓殑闈炶繍绠椼傗!鈥濇槸C璇█涓鐨勯潪杩愮畻绗︼紝鍦ㄥ彉閲忓墠闈娇鐢ㄥ畠锛屼細鏋勫缓闈炶繍绠楄〃杈惧紡锛岃〃杈惧紡鐨勮繑鍥炵粨鏋滄槸涓竷灏斿硷紙涔熷氨鏄彧鏈塼rue鎴杅alse锛夈傚鍙橀噺浣跨敤鏃讹紝濡傛灉鍙橀噺涓嶆槸甯冨皵鏁版嵁绫诲瀷锛屽皢浼氬己鍒惰浆鍖栦负甯冨皵绫诲瀷鍐嶄娇鐢紝濡傛暣褰㈠彉閲123灏嗚杞寲涓簍rue锛屾暣褰㈠彉閲0灏嗚杞寲涓篺alse銆
  • c璇█涓%5d鏄粈涔堟剰鎬?
    绛旓細C璇█涓紝鈥%5d鈥濇槸鐨勬剰鎬濇槸浠ユ暣褰㈡潵鏍煎紡鍖栧弬鏁帮紝骞朵笖褰撴暣鏁板瓧绗︽暟灏戜簬5涓儏鍐典笅锛屽鏍煎紡鍖栦竴瀹氭暟閲忕┖鏍兼潵濉厖锛屼互浣垮緱绌烘牸鍜屾暣鏁版墍鐢ㄥ瓧绗︽暟鐨勬诲拰杈惧埌鑷冲皯5涓侰璇█涓紝鈥%5d鈥濅竴鑸敤浜巔rintf鍑芥暟鍜宻printf鍑芥暟銆傚畠浠牸寮忓寲瀛楃涓叉椂锛屽彲浠ユ寚瀹氫覆鐨勬牸寮忥紝鍦ㄦ牸寮忎覆鍐呴儴浣跨敤涓浜涗互鈥%鈥濆紑澶寸殑鏍煎紡璇存槑绗︽潵...
  • 扩展阅读:c++教程 ... c#结构体 ... c++中<< ... c语言中结构体的使用 ... c++编程 ... c c++ c# ... c#基本结构 ... c语言struct结构体数组 ... c++编辑 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网