C語言基礎_隨機數、數組、函數、指針

0、隨機數:

  • 要用C語言產生隨機數,首先在預處理程序部分要引入stdlib.h頭文件,然后就可以用rand()在后續程序中生成隨機數了。
  • 如果不設置隨機數種子srand(),后面生成的隨機數序列就是以41開頭的一個固定序列,因此一般以系統時間來設置隨機數種子,所以在預處理程序部分還要引入time.h頭文件。通過代碼srand((unsigned int)time(NULL)); 設置隨機數種子。需要注意的是,隨機數種子設置一次即可,后面每次生成隨機數就行了。

1、數組:

  • 數組:由編譯器在棧中申請一片連續空間,其中每一個空間中的元素類型是相同的。因此數組可以通過指針自增,自減來遍歷。
  • 語法:數組類型 數組名[數組大小] = {x,x,~,x};
    • 設置數組時,在給數組一次性賦值的情況下,可以省略數組大小。
    • 設置數組時,只是定義數組類型,數組名和數組大小的情況下,可以通過for循環給數組初始化。
  • 數組訪問的時候,數組下標都是從0開始的。

2、函數:

  • 函數是面向過程編程語言的最基本的單位。

  • 函數是一個代碼塊,擁有特定的輸入輸出接口,用于實現一個特定的功能。

  • 函數優點:
    1、提高代碼的可讀性
    2、提高代碼復用性
    3、提高了可移植性
    4、提高可維護性

  • 函數的定義:

函數類型 函數名(形參){函數體
}

函數的調用:函數名(實參);

  • 函數的類型和返回值
    • 函數可以有返回值,也可以沒有返回值
    • 函數的類型就是返回值的類型,可以是任意類型
    • 函數的返回值是由return來給出的,return除了可以給函數返回值以外,還能終止函數。
    • 如果沒有返回值,函數類型就是void,沒有返回值可以使用return,直接后面跟分號就可以。
  • 注意:在c語言中,函數如果寫在主函數后面,那么在主函數前面要寫上函數聲明,寫函數聲明只需要寫上:函數類型 函數名(形參)即可。
  • 函數遞歸:函數遞歸,可以理解就是兩個過程,一個是遞,一個是歸,這個兩個過程的轉折點就是遞歸終止條件,滿足某個條件之后,遞歸程序就從遞的過程轉向了歸的過程。

3、指針:

  • 指針的定義就是:存放變量地址的變量;
  • 指針初始化時,為什么指針類型要求必須和它所指向的變量類型一致?
    答:不同類型的變量占用的內存空間大小不同(如int通常 4 字節,char1 字節)。指針類型決定了指針進行加減運算時的步長,以及解引用時訪問的內存范圍。例如:int* 指針 + 1 會移動 4 字節(跳過一個int),而char* 指針 + 1 只移動 1 字節。如果類型不匹配,可能導致訪問越界。
  • int* p; 執行了p+1,就相當于讓p保存的地址向后移動4個字節,因為指針指向的是整型變量。數組在內存中是連續存放的,所以可以通過這種方式訪問數組中每個元素,一維數組的數組名就是數組的首地址。
  • 指針的初始化方式如下:
int a = 12;
// 正確的指針初始化方式:
int* p1 = &a;
// 錯誤的指針初始化方式:
int* p2;
*p2 = a;
  • 初始化名命的時候,int p = &a; 在初始化過程中是"解引用"符號,&是"取地址"符號。
  • int* p 等價于 &a; *p等價于a;
  • 如果函數形參設置為指針(int* p),那么傳遞到函數形參位置的實參就得是一個變量地址(&a)。通過函數設置形參的方式,可以讓本來只能返回一個值的函數,返回多個值,這種方法的本質就是,函數把傳遞進去的變量的值通過運算進行了修改( 利用了*p等價于a)。

總結:

  • 函數是一種便于模塊化代碼的方式,哪一塊出問題就改哪一塊代碼即可。
  • 指針方便了數組遍歷,打破了函數只能返回一個值的魔咒。

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

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

相關文章

PHP?ORT擴展構建純PHP機器學習的推薦系統

結合 PHP?ORT 構建推薦系統的核心思想是:使用 ONNX 格式的機器學習模型,在 PHP 中本地執行推理,實時給出推薦結果。下面是一個完整的架構設計與實現路徑,適合你快速上手。🎯 場景目標 你想在一個 PHP 網站中實現推薦功…

PromptPilot搭配Doubao-seed-1.6:定制你需要的AI提示prompt

目錄 一、PromptPilot 二、基于產品評價的用戶情感分析 2.1 使用PromptPiolt工具進行提示詞生成 2.2 基于prompt的模型調試 2.3 基于prompt的批量數據測評 2.4 基于多輪對話的prompt測試 如今,我們正身處一個 AI 技術飛速迭代的時代。人工智能早已不再是實驗室…

MSPM0開發學習筆記:二維云臺結合openmv實現小球追蹤

文章目錄前言一、硬件選擇二、原理介紹(UART)三、硬件連線三、軟件代碼1、視覺部分代碼(Openart)2、控制部分代碼(MSPM0)(1) UART部分(2) 計算函數部分&#…

【CTF-WEB-SQL】SQL注入基本流程(sql-labs的Less11)(用burp抓取post然后用sqlmap盲注)

題目 從第11less開始,就是POST表單了burp抓取數據包將抓取到的數據包存放到桌面,保存為post.txt數據包內容如下:POST /Less-11/ HTTP/1.1 Host: 223.112.39.132:44537 Content-Length: 39 Cache-Control: max-age0 Accept-Language: zh-CN,zh…

WPF 與 Winform :Windows 桌面開發該用誰?

WPF 與 Winform :Windows 桌面開發該用誰? 一、 WPF 與 Winform的概念 WPF:顏值與實力并存的 “后起之秀” Winform:簡單直接的 “老前輩” 二、WPF 與 Winform 的核心差異 1. 設計理念:分離 vs 耦合 2. 布局系統:靈活適配 vs 固定坐標 3. 視覺效果:絢麗動畫 vs 樸素原生…

【Git學習】入門與基礎

目錄 Git的安裝 Git 配置用戶信息 Git 初始化本地倉庫 Git 工作區、暫存區和版本庫 Git 跟蹤文件 Git 修改文件 Git 刪除文件 Git 撤銷本地文件的修改 Git 取消暫存 Git 跳過暫存區 Git 版本回退 Git 撤銷提交 Git 設置忽略文件 Git 比較文件差異 Git 代碼托管平臺…

idea添加gitlab訪問令牌

1.按下圖所示順序操作gitlab,獲取到對應的token;2.填寫對應的gitlab地址和第一步獲取的token

人工智能領域、圖歐科技、IMYAI智能助手2025年5月更新月報

2025年5月IMYAI平臺技術動態與模型更新綜述 摘要: 本文整理了2025年5月期間IMYAI平臺發布的主要技術更新、新模型上線信息及功能調整公告,涵蓋DeepSeek、Gemini、Claude、即夢、Suno等模型動態及平臺功能優化。 正文: 一、 模型更新與上線Dee…

機器人權利:真實還是虛幻,機器人權利研究如何可能,道德權利與法律權利

一、機器人權利:真實還是虛幻?機器人權利的討論源于技術進步對傳統法律與倫理體系的沖擊,其真實性取決于技術發展階段與社會接受度的互動。當前,機器人權利仍呈現“虛幻與真實交織”的特征:技術基礎:從工具…

通信小白產品學習碎片01

1. 云中繼(Cloud Media Relay) 運營商在Volte/Vonr場景中引入的核心網關鍵功能,用于優化媒體流的傳輸路徑,解決跨運營商、跨地域通信時的網絡繞行問題。 傳統:A終端—>A核心網—>跨網互聯點—>B核心網—>…

?CVPR2025 3D 生成新框架|Kiss3DGen 讓 2D 擴散模型玩轉 3D 資產生成

?CVPR 3D 生成新框架|Kiss3DGen 讓 2D 擴散模型玩轉 3D 資產生成 📄論文題目:Kiss3DGen: Repurposing Image Diffusion Models for 3D Asset Generation ??作者及機構:Jiantao Lin、Xin Yang、Meixi Chen 等(HKUST …

HTTP基本結構

目錄前言1. 概念2. HTTP基本格式2.1 抓包原理2.2 抓包軟件使用2.3 抓包結果3. HTTP請求3.1 URL3.2 方法3.3 版本號3.4 HTTP報頭3.4 正文部分4. HTTP響應4.1 HTTP狀態碼4.2 其他部分總結前言 本篇文章介紹HTTP的基本結構。 1. 概念 HTTP全稱為超文本傳輸協議,是一…

CVPR優秀論文 | DashGaussian:在200秒內優化三維高斯點繪制

本文選自gongzhonghao【圖靈學術SCI論文輔導】關注我們,掌握更多頂會頂刊發文資訊1.導讀1.1 論文基本信息論文標題:DashGaussian: Optimizing 3D Gaussian Splatting in 200 Seconds作者:Youyu Chen、Junjun Jiang、Kui Jiang、Xiao Tang、Zh…

知識蒸餾 - 基于KL散度的知識蒸餾 HelloWorld 示例 采用PyTorch 內置函數F.kl_div的實現方式

知識蒸餾 - 基于KL散度的知識蒸餾 HelloWorld 示例 采用PyTorch 內置函數F.kl_div的實現方式 flyfish kl_div 是 Kullback-Leibler Divergence的英文縮寫。 其中,KL 對應提出該概念的兩位學者(Kullback 和 Leibler)的姓氏首字母“div”是 div…

C語言基礎_補充知識、數據類型轉換、選擇結構

0、補充知識: 原碼、反碼、補碼的知識: 計算機中原碼轉補碼,正數不變,負數是符號位不變,其余各位取反碼加一。負數的補碼轉原碼應該是補碼減一然后再取反,為什么負數的補碼轉原碼是補碼取反然后再加一&…

ubuntu自動重啟BUG排查指南

當 Ubuntu 系統意外重啟時,排查原因需要從系統日志、硬件狀態和定時任務等多個方面入手。 示例:通過日志檢查重啟原因 last -x | head | tac 此命令顯示最近的關機和重啟記錄。如果記錄中包含 shutdown 或 crash,則可能是人為操作或系統故障導…

2. JS 有哪些數據類型

總結 基礎類型(7 種):number, string, boolean, null, undefined, symbol, bigint引用類型(對象及其子類):object, array, function, date, regexp, map, set 等 判斷方式推薦: 基礎類型&#x…

pipeline方法關系抽取--課堂筆記

Pipeline方法課堂筆記 一、Pipeline方法原理 pipeline方法是指在實體識別已經完成的基礎上再進行實體之間關系的抽取. pipeline方法流程: 先對輸入的句子進行實體抽取,將識別出的實體分別組合;然后再進行關系分類. 注意:這兩個子過…

linux系統離線環境安裝clickhouse客戶端

1、下載離線安裝包: 方式1:網站直接下載 鏈接:https://packagecloud.io/altinity/clickhouse 注意要下載同一版本的四個包 方式2:夸克網盤分享 鏈接:https://pan.quark.cn/s/7e77e6a1bc5f 2、將本地下載的安裝包上傳…

GPT-5的誕生之痛:AI帝國的現實危機

目錄 前言 一、“俄里翁”的隕落:一場夢碎的代際飛躍 二、扎克伯格的“抄家式”突襲 三、天才的詛咒:當AI聰明到無法與我們對話 四、燒錢的無底洞與微軟的影子 結語:AI帝國的黃昏,還是黎明前的黑暗? &#x1f3a…