C語言——結構體的應用

歸納編程學習的感悟,
記錄奮斗路上的點滴,
希望能幫到一樣刻苦的你!
如有不足歡迎指正!
共同學習交流!
🌎歡迎各位→點贊 👍+ 收藏? + 留言?📝
? ? ?路還在繼續,夢還在期許。天高云遠,至少看得見!

?一起加油!?

目錄

一、題目:

二、分析:

三、知識點:

????????指向結構體的指針變量作為函數參數

????????結構體指針與函數?

四、代碼實現:?

五、運行結果(這里假設3為教師):

?編輯?

?六、總結:


一、題目:

????????某學校增加教師的工資。假設工資根據教師的職稱增加:教授增加 500元副教授增加 300 元,講師增加 200 元,助教增加 100 元。教師的信息有姓名、年齡、職和工資等,編寫程序,計算每位教師增加后的工資(假設共有 100 位老師)

二、分析:

????????分析:教師的基本信息包括: name(姓名)、age(年齡)、post(職稱)和 wages(工資)。采用結構體類型存儲基本信息。增加工資用 add()函數實現,實參和形參采用指向結構體類型的指針。

三、知識點:

????????指向結構體的指針變量作為函數參數

????????函數間傳遞結構體數據時,函數參數可以是結構體變量的成員,也可以是結構體變量,還可以是指向結構體的指針。
????????常見的做法是將指向結構體的指針作為函數的實參,傳遞給調用的函數。這種傳遞方式相當于地址傳遞,指針形參變量和實參指針指向同一內存空間。需要注意的是,采用這種參數傳遞方式,在被調用的函數中如果對結構體成員進行賦值,則會改變上一級函數中結構體變量的值。

????????結構體指針與函數?

????????C 語言函數的參數傳遞都是傳值的,一些應用程序需要用結構體數據作為參數進行傳
遞。一般情況下,雖然說 C 語言允許傳遞結構體數據,但是結構體使用的存儲空間可能比較大,這就可能導致傳送數據量過大影響程序的運行效率。如果選擇結構體變量作為數,那么只能在該結構體使用的字節數比較少時使用。

????????函數之間如果需要傳遞結構體數據,有經驗的程序員一般采用傳遞結構體指針的方法這樣就大幅減少了參數傳遞時的數據傳送量,也意味著程序運行速度得以提高

????????函數返回時道理也一樣,在結構體的字節數比較多時,應該盡量避免返回一個結構類型的數據,而盡可能返回一個指向結構體的指針變量。

四、代碼實現:?

#include<stdio.h>
#include<string.h>
#define N 100struct teach{//teach結構體定義 char name[11];int age;char post[11];double wages;
};double add(struct teach *);//add函數聲明 int main(){struct teach man[N];int i;for(i=0;i<N;i++){//輸入教師的基本信息 printf("輸入第%d個教師的基本信息\n",i+1);printf("姓名: ");scanf("%s",man[i].name);printf("年齡:");scanf("%d",&man[i].age);printf("職稱:");scanf("%s",man[i].post);printf("原工資:");scanf("%lf",&man[i].wages); }for(i=0;i<N;i++){//對每個教師調用add函數 printf("姓名:%s 調整后的工資:%.2f\n",man[i].name,add(&man[i]));}
}double add(struct teach *q){double addwage;if(strcmp(q->post,"教授")==0){q->wages+=500;}else if(strcmp(q->post,"副教授")==0){q->wages+=300;}else if(strcmp(q->post,"講師")==0){q->wages+=200;}else {q->wages+=100;}addwage=q->wages;return addwage;
}

五、運行結果(這里假設3為教師):

?六、總結:

? ? ? ? 利用結構體可以將多個相同或不同類型的數據組合在一起構成新數據類型。

? ? ? ? 通常在源程序文件的開始部分定義結構體類型,以便本文件的所有函數中都能用它定義變量,數組和指針。

? ? ? ? 當然也可以在函數中聲明結構體類型,其有效范圍僅限與該函數。

????????最后,希望本篇文章對你有所幫助,也希望可以支持支持博主,后續博主也會定期更新學習記錄,記錄學習過程中的點點滴滴。若這篇文章中有哪些不正確的內容,歡迎大家在評論區和我交流討論!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161682.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161682.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161682.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

webGL技術開發的軟件類型

WebGL 是一種在瀏覽器中渲染 2D 和 3D 圖形的 JavaScript API。通過 WebGL&#xff0c;你可以創建各種類型的軟件項目&#xff0c;特別是那些需要強大圖形渲染能力的項目。以下是一些你可以使用 WebGL 實現的軟件項目類型&#xff0c;希望對大家有所幫助。北京木奇移動技術有限…

老生常談之 JavaScript 中 0.1 + 0.2 != 0.3 的原因

先來一個模棱兩可的說法&#xff1a;因為精度丟失、存儲溢出的問題 先復習一下二進制的轉換方法&#xff1a; 整數&#xff1a;除以基數&#xff0c;取余&#xff0c;自底向上小數&#xff1a;乘以基數&#xff0c;取整&#xff0c;自頂向下 接著&#xff0c;復習一下雙精度…

Linux使用操作

各類小技巧 ctrlc強制停止 ctrld退出賬戶的登錄 或者退出某些特定程序的專屬頁面 history 查看歷史命令 !命令前綴&#xff0c;自動執行上一次匹配前綴的命令 ctrlr 輸入內容去匹配歷史命令 光標移動快捷鍵 ctrla&#xff0c;跳到命令開頭 ctrle&#xff0c;跳到命令結尾…

【C語言_題庫】輸入4個整數,要求按照從小到大的順序輸出

題目 輸入4個整數 要求按照從小到大的順序輸出 書上的學習輔導答案 // 主要部分 int main(){int t,a,b,c,d;printf("請輸入四個數:");scanf("%d,%d,%d,%d"

SkyWalking全景解析:從原理到實現的分布式追蹤之旅

&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交給時間 &#x1f3e0; &#xff1a;小破站 SkyWalking全景解析&#xff1a;從原理到實現的分布式追蹤之旅 前言第一&#xff1a;SkyWalking簡介第二&#xff1a;實現原理概覽第三&#xff1a;主鍵與架構第四&#xff1…

【計算機基礎】通過插件plantuml,實現在VScode里面繪制狀態機

&#x1f4e2;&#xff1a;如果你也對機器人、人工智能感興趣&#xff0c;看來我們志同道合? &#x1f4e2;&#xff1a;不妨瀏覽一下我的博客主頁【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸對你有幫助&#xff0c;可點贊 &#x1f44d;…

數學與她的

文章目錄 定義域函數的定義域&#xff1a;一般地復合函數求解極值&#xff0c;單調性綜合考題&#xff1a; 定義域 函數的定義域&#xff1a; 求定義域的原則性問題&#xff08;通用&#xff09;分母不為0 偶次根式的被開方式為非負&#xff08; ≥ 0 &#xff09; 偶次根式的…

redis運維(十五) 集合

一 集合 ① 概念 集合的元素在redis里面的世界是member集合&#xff1a; setset集合當中不允許重復的元素&#xff0c;而且set集合當中元素是沒有順序的,不存在元素下標 ② sadd、smembers、srem ③ sismember、srandmember、spop、scard spop 命令用于移除集合中的指定 …

sql語法大全

1&#xff0c;創建數據庫 create database 數據庫名字; 2,查看所有的數據庫名稱 show databases; MySQL服務器已有4個數據庫&#xff0c;這些數據庫都是MySQL安裝時自動創建的。 information_schema 和 performance_schema 數據庫分別是 MySQL 服務器的數據字典&#xff08;…

CSS 漸變

linear-gradient() 線性漸變 /* 漸變軸為 45 度&#xff0c;從藍色漸變到紅色 */ linear-gradient(45deg, blue, red);/* 從右下到左上、從藍色漸變到紅色 */ linear-gradient(to left top, blue, red); /* to [left/right] [top/bottom] *//* 色標&#xff1a;從下到上&#…

算法——滑動窗口(Sliding Window)

一、背景知識 滑動窗口算法&#xff08;Sliding Window&#xff09;&#xff1a; 在給定數組 / 字符串上維護一個固定長度或不定長度的窗口。可以對窗口進行滑動操作、縮放操作&#xff0c;以及維護最優解操作。題型一&#xff1a;固定長度題型二&#xff1a;不固定長度 二、例…

TypeScript 學習筆記 第二部分 webpack 創建typescript項目

【視頻鏈接】尚硅谷TypeScript教程&#xff08;李立超老師TS新課&#xff09; 創建webpack 項目 IDE&#xff1a;webstorm 新建一個空的項目運行npm init初始化項目目錄結構 1. 安裝 webpack&#xff1a;構建工具webpack-cli&#xff1a; webpack的命令行工具typescript&am…

PCIE鏈路訓練-狀態機描述1

狀態機描述 Config.linkwidth.start&#xff1a; 1. &#xff08;1&#xff09;Linkup 0 狀態機沒有執行鏈路寬度的升級&#xff08;upconfiguration of the Link width&#xff09;&#xff1a;那么tx會在所有active的dsp上發送TS1&#xff0c;其中link num為具體內容&a…

git stash 用法總結

目錄 1&#xff0c;介紹場景1&#xff1a;場景2&#xff1a; 2&#xff0c;常用命令2.1&#xff0c;基礎2.2&#xff0c;進階1&#xff0c;存儲時指定備注2&#xff0c;通過索引來操作指定的存儲3&#xff0c;修改存儲規則 2.3&#xff0c;查看 stash 修改的具體內容 1&#xf…

Element UI之Dialog 對話框

Dialog 對話框 用于彈出窗口 按需引入方式 如果是完整引入可跳過此步驟 import Vue from vue import { Dialog } from element-ui import element-ui/lib/theme-chalk/base.css import element-ui/lib/theme-chalk/dialog.cssVue.use(Dialog)基礎使用 <template><…

摩爾定律,梅特卡夫定律,吉爾德定律

信息系統的三大定律(摩爾定律&#xff0c;梅特卡夫定律&#xff0c;吉爾德定律)有一個清晰的視角&#xff1a; 信息系統不是左邊的生產消費系統&#xff0c;而是右邊的交易系統&#xff0c;交易系統與生產消費典型的區別在于信息交易過程會產生新的信息&#xff0c;就像錢一樣…

c語言——俄羅斯方塊

一、游戲效果 俄羅斯方塊 二. 游戲背景 俄羅斯方塊是久負盛名的游戲&#xff0c;它也和貪吃蛇&#xff0c;掃雷等游戲位列經典游戲的?列。 《俄羅斯方塊》&#xff08;Tetris&#xff0c;俄文&#xff1a;Тетрис&#xff09;是一款由俄羅斯人阿列克謝帕基特諾夫于1984…

java http

超文本傳輸協議 超文本/html 工作方式 get / url 請求獲取相應報文 http://xxxxxxxxxxxx.com/user?xxx xxx 協議類型 - 服務器地址 -路徑 path 請求格式: head / body path路徑進行處理資源 等同于報文請求: GET: /users HTTP/1.1 Host:api.github.com 響應報文 請求方式…

京東數據分析平臺(京東運營數據采集):2023年10月京東白酒品牌銷售排行榜

鯨參謀監測的京東平臺10月份白酒市場銷售數據已出爐&#xff01; 鯨參謀數據顯示&#xff0c;10月份&#xff0c;京東平臺上白酒的銷量為340萬&#xff0c;環比增長約16%&#xff0c;同比增長約37%&#xff1b;銷售額為28億&#xff0c;環比增長約20%&#xff0c;同比增長約122…

educoder中Hive綜合應用案例 — 學生成績查詢

第1關:計算每個班的語文總成績和數學總成績 ---------- 禁止修改 ----------drop database if exists mydb cascade;set hive.auto.convert.join = false; set hive.ignore.mapjoin.hint=false; ---------- 禁止修改 ---------- ---------- begin ---------- ---創建mydb數據…