c++基礎學習第二天(數組,函數)

提示:c++基礎學習第二天(數組,函數)

文章目錄

  • 1、數組
    • 1.1、 概述
    • 1.2、一維數組
      • 1.2.1、一維數組定義方式
      • 1.2.2、一維數組名稱的用途.
    • 1.3、 二維數組
      • 1.3.1、二維數組定義方式
      • 1.3.2、二維數組數組名的用途
  • 2、函數
    • 2.1、概述
    • 2.2、函數的定義
    • 2.3、函數的調用
    • *2.4、值傳遞
    • 2.5、函數的常見樣式
    • *2.6、函數的聲明(聲明要在調用前)
    • *2.7、函數的分文件編寫


1、數組

1.1、 概述

所謂數組,就是一個集合,里面存放了相同類型的數據元素
特點1:數組中的每個放據元素都是相同的數據類型
特點2:數組是由連續的內存位置組成的

1.2、一維數組

1.2.1、一維數組定義方式

維數組定義的三種方式:
1.數據類型
數組名[數組長度];
//給數組中的元素進行賦值
//數組元素的下標是從0開始索引的
2.數據類型
數組名[數組長度]={值1,值2…};
//如果在初始化數據時候,沒有全部填寫完,會用0來填補剩余數據
3.數據類型
數組名[]={值1,值2…};
//定義數組的時候,必須有初始長度
//int arr[];是錯誤的

1.2.2、一維數組名稱的用途.

1.可以統計整個數組在內存中的長度,sizeof(arr);
2.可以獲取數組在內存中的首地址,cout<<arr<<endl;
數組名(arr)是數組的首地址,arr[0]代表的是數組的元素。

//1、可以通過數組名統計整個數組占用內存大小
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
cout << "整個數組占用內存空間為:" << sizeof(arr) << endl;
cout << "每個元素占用內存空間為:" << sizeof(arr[0]) << endl;
cout << "數組中元素個數為:" << sizeof(arr) / sizeof(arr[0]) << endl;
//2、可以通過數組名查看數組首地址
cout << "數組首地址為(十六進制):" << arr << endl;
cout << "數組首地址為:" << (int)arr << endl;
cout << "數組中第一個元素地址為:" << (int)&arr[0] << endl;
cout << "數組中第二個元素地址為:" << (int)&arr[1] << endl;

//數組名是常量,不可以進行賦值操作
//arr = 100;

1.3、 二維數組

二維數組就是在一雄數組上,多加一個雄度。

1.3.1、二維數組定義方式

二維數組定義的四種方式:
1.數據類型 數組名[行數][列數];
2.數據類型 數組名[行數][列數]={{數據1,數據2},{數據3,數據4}};
3.數據類型 數組名[行數][列數]={數據1,數據2,數據3,數據4};
4.數據類型 數組名[][列數]={數據1,數據2,數據3,數據4};//行數可以省列數不可以省。
建議:以上4種定義方式,利用第二種更加直觀,提高代碼的可讀性

int arr1[2][3] ={
{1,2,3},
{4,5,6}
};
for (int i = 0; i < 2; i++) {for (int j = 0; j < 3; j++){cout << arr1[i][j] << " ";}cout << endl;
}
int arr2[][3] = {1,2,3,4,5,6};
for (int i = 0; i < 2; i++) {for (int j = 0; j < 3; j++) {cout << arr2[i][j] << " ";}cout << endl;
}

1.3.2、二維數組數組名的用途

查看二維數組所占內存空間
獲取二維數組首地址
arr3代表的是二維數組的首地址,arr3[i]代表的是第i行的首地址,
&arr3[0][0]代表的是第i行,第j列的地址。

//1、可以查看占用內存空間大小
int arr3[2][3] = {
{ 1,2,3 },
{ 4,5,6 } };
cout << "二維數組占用內存空間為:" << sizeof(arr3) << endl;
cout << "二維數組第一行占用內存為:" << sizeof(arr3[0]) << endl;
cout << "二維數組第一個元素占用內存為:" << sizeof(arr3[0][0]) << endl;
cout << "二維數組行數為:" << sizeof(arr3) / sizeof(arr3[0]) << endl;
cout << "二維數組列數為:" << sizeof(arr3[0]) / sizeof(arr3[0][0]) << endl;
//獲取二維數組首地址
cout << "二維數組首地址為:"<<(long)arr3<<endl;
cout << "二維數組第一行首地址為:"<<(long)arr3[0]<<endl;
cout << "二維數組第二行直地址為:"<<(long)arr3[1]<<endl;
cout << "二維數組第一個元素首地址:"<<(long)&arr3[0][0]<<endl;
cout << "二維數組第二個元素首地址:"<<(long)&arr3[0][1]<<endl;

2、函數

2.1、概述

作用:將一段經常使用的代碼封裝起來,減少重復代碼
一個較大的程序,一般分為若干個程序塊,每個模塊實現特定的功能。

2.2、函數的定義

函數的定義一般主要有5個步裝:
1、返回值類型
2、函數名
3、參數表列工
4、函數體語句
5、return表達式
語法:

返回值類型 函數名(參數列表){函數體語句return 表達式
}

2.3、函數的調用

功能:使用定義好的函放
語法:函數名(參數)

int a = 10, b = 20;
// a和b稱為實際參數,簡稱實參
// 當調用函數時么,實參的值會傳遞給形參
int c = add(a, b);
cout << "c:" << c << endl;
// 定義加法函數
// 函數定義的時候,參數列表的num1和num2并沒有真實的數據,
// 他只是一個形式上的參數,簡稱形參

*2.4、值傳遞

  • 所謂值傳遞,就是函數調用時實參將數值傳入給形參
  • 值傳遞時,如果函數的形參發生變化,并不會影響實參
  • 如果函數不需要返回值,聲明的時候可以寫void

2.5、函數的常見樣式

常見的函數樣式有4種
1.無參無返
2.有參無返
3.無參有返
4.有參有返

*2.6、函數的聲明(聲明要在調用前)

作用:告訴編譯器函數名稱及如何調用函數。函數的實際主體可以單獨定義。
函數的聲明可以多次,但是函數的定義只能有一次
提前告訴編譯器函數的存在,可以利用函數的聲明

*2.7、函數的分文件編寫

作用:讓代碼結構更加清晰
函數分文件編寫一般有4個步驟
1.創建后綴名為.h的頭文件
2.創建后綴名為.cpp的源文件
3.在頭文件中寫函數的聲明
4.在源文件中寫函數的定義
5.在源文件(#include <源文件名>)中關聯源文件對應的頭文件,并在頭文件中聲明源文件用到的文件(例如:#include )或常量等(例如using namespace std;)

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

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

相關文章

云計算 2月28號 (linux的磁盤分區)

一 存儲管理 主要知識點: 基本分區、邏輯卷LVM、EXT3/4/XFS文件系統、RAID 初識硬盤 機械 HDD 固態 SSD SSD的優勢 SSD采用電子存儲介質進行數據存儲和讀取的一種技術&#xff0c;擁有極高的存儲性能&#xff0c;被認為是存儲技術發展的未來新星。 與傳統硬盤相比&#xff0c…

Vue 3 中的 Composition API 詳解

Vue.js&#xff0c;作為前端領域流行的框架之一&#xff0c;以其響應式數據綁定和組件化開發贏得了廣大開發者的喜愛。隨著前端技術的不斷發展和項目復雜度的增加&#xff0c;Vue 團隊推出了 Vue 3&#xff0c;并引入了 Composition API&#xff0c;以更好地滿足復雜應用的需求…

深度偽造,讓網絡釣魚更加難以辨別

網絡釣魚一直是安全領域的一個突出話題&#xff0c;盡管這類詐騙形式已經存在了幾十年&#xff0c;依舊是欺詐攻擊或滲透組織的最有效方法之一。詐騙分子基于社會工程原理&#xff0c;通過郵件、網站以及電話、短信和社交媒體&#xff0c;利用人性&#xff08;如沖動、不滿、好…

嵌入式驅動學習第二周——Linux內核打印

前言 這篇博客來聊一聊Linux內核打印。 嵌入式驅動學習專欄將詳細記錄博主學習驅動的詳細過程&#xff0c;未來預計四個月將高強度更新本專欄&#xff0c;喜歡的可以關注本博主并訂閱本專欄&#xff0c;一起討論一起學習。現在關注就是老粉啦&#xff01; 目錄 前言1. dmesg指令…

react diff

react diff算法為降低算法復雜度提出了三大策略&#xff1a; 1.只進行同級比較 2.節點類型比較&#xff0c;不同元素生成不同的fiber樹 3.key作為元素的唯一標識 diff算法流程 diff算法需要進行兩輪遍歷&#xff1a; 第一輪遍歷更新的節點。 第二輪遍歷沒更新的節點。 第一輪…

【LeetCode:225. 用隊列實現棧 + 棧 | 隊列】

&#x1f680; 算法題 &#x1f680; &#x1f332; 算法刷題專欄 | 面試必備算法 | 面試高頻算法 &#x1f340; &#x1f332; 越難的東西,越要努力堅持&#xff0c;因為它具有很高的價值&#xff0c;算法就是這樣? &#x1f332; 作者簡介&#xff1a;碩風和煒&#xff0c;…

水牛社軟件是真的嗎?

軟件是真的&#xff0c;不過畢竟是為了賺錢或者獲取資源而買的&#xff0c;所以大部分只關心能賺多少錢吧 說實話&#xff0c;我用了2年了&#xff0c;一些獨立的項目還有群&#xff0c;有一月掙幾千上萬的&#xff0c;有一月賺幾百的 軟件是一個集合體&#xff0c;不是像很多…

【leetcode刷題之路】面試經典150題(5)——二叉樹+二叉樹層次遍歷+二叉搜索樹

文章目錄 9 二叉樹9.1 【遞歸】二叉樹的最大深度9.2 【遞歸】相同的樹9.3 【遞歸】翻轉二叉樹9.4 【遞歸】對稱二叉樹9.5 【遞歸】從前序與中序遍歷序列構造二叉樹9.6 【遞歸】從中序與后序遍歷序列構造二叉樹9.7 【BFS】填充每個節點的下一個右側節點指針 II9.8 【遞歸】二叉樹…

代碼隨想錄第二十七天 455.分發餅干 376.擺動序列 53.最大子序和 122.買賣股票的最佳時機II

LeetCode 455 分發餅干 題目描述 假設你是一位很棒的家長&#xff0c;想要給你的孩子們一些小餅干。但是&#xff0c;每個孩子最多只能給一塊餅干。 對每個孩子 i&#xff0c;都有一個胃口值 g[i]&#xff0c;這是能讓孩子們滿足胃口的餅干的最小尺寸&#xff1b;并且每塊餅…

2024全國護網行動HW行動招聘/收人!!!

2024全國護網行動HW行動招聘 溯蓉信創開始收人啦&#xff01;&#xff01;&#xff01;現在開始收錄2024HW簡歷&#xff0c;感興趣的小伙伴掃碼二維碼添加微信 我們簽約后&#xff0c;入場即預付款3k&#xff0c;簽約后我們會在HW之前對我們的人員進行HW培訓&#xff0c;保證上…

Three.js--》探尋Cannon.js構建震撼的3D物理交互體驗(一)

我們用three.js可以繪制出各種酷炫的畫面&#xff0c;但是當我們想要一個更加真實的物理效果的話&#xff0c;這個時候我們就需要一個物理的庫&#xff0c;接下來我們就講解一下今天要學習的canon&#xff0c;它可以給我們提供一個更加真實的物理效果&#xff0c;像物體的張力、…

YOLOv8姿態估計實戰:訓練自己的數據集

課程鏈接&#xff1a;https://edu.csdn.net/course/detail/39355 YOLOv8 基于先前 YOLO 版本的成功&#xff0c;引入了新功能和改進&#xff0c;進一步提升性能和靈活性。YOLOv8 同時支持目標檢測和姿態估計任務。 本課程以熊貓姿態估計為例&#xff0c;將手把手地教大家使用C…

Mysql實戰(2)之MySQL執行流程

-- 查看mysql當前有多少連接 show global status like Thread%; /* Threads_cached&#xff1a;緩存中的線程連接數 Threads_connected&#xff1a;當前打開的連接數 Threads_created&#xff1a;為處理連接創建的線程數 Threads_running&#xff1a;非睡眠狀態的連接數&…

windows部署mariadb-11.3

因為需要用到數據庫來處理一些東西,所以決定在windows上安裝一下MariaDB. 隨著版本升級,安裝已經不是那么復雜了.對應的.其實網上一大堆的檢索結果,很多并不可用. 由于是開發環境,這里一切從簡了. 下載安裝包.并解壓進入bin目錄,使用mysql_install_db.exe程序來進行安裝.執行 m…

MSCKF5講:后端代碼分析

MSCKF5講&#xff1a;后端代碼分析 文章目錄 MSCKF5講&#xff1a;后端代碼分析1 初始化initialize()1.1 加載參數1.2 初始化IMU連續噪聲協方差矩陣1.3 卡方檢驗1.4 接收與訂閱話題createRosIO() 2 IMU靜止初始化3 重置resetCallback()4 featureCallback4.1 IMU初始化判斷4.2 I…

【文末送書】智能計算:原理與實踐

歡迎關注博主 Mindtechnist 或加入【智能科技社區】一起學習和分享Linux、C、C、Python、Matlab&#xff0c;機器人運動控制、多機器人協作&#xff0c;智能優化算法&#xff0c;濾波估計、多傳感器信息融合&#xff0c;機器學習&#xff0c;人工智能等相關領域的知識和技術。關…

Linux系統運維腳本:一鍵添加防火墻規則(開啟服務和網絡端口)

目 錄 一、要求 二、解決方案 &#xff08;一&#xff09;解決思路 &#xff08;二&#xff09;方案 三、腳本程序實現 &#xff08;一&#xff09;腳本代碼和解釋 1、腳本代碼 2、代碼解釋 &#xff08;二&#xff09;腳本驗證 1、腳本編輯 2、給予執行權限…

NumPy數據處理詳解的筆記2

NumPy數據處理詳解的筆記2 第1章NumPy基礎 NumPy是用于處理多維數組的數值運算庫&#xff0c;不僅可用于 機器學習&#xff0c;還可以用于圖像處理&#xff0c;語言處理等任務。 1.2 多維數據結構ndarray的基礎 在學習NumPy的過程中&#xff0c;只要理解了ndarray的相關知識…

java 關于 Object 類中的 wait 和 notify 方法。(生產者和消費者模式!)

4、關于 Object 類中的 wait 和 notify 方法。&#xff08;生產者和消費者模式&#xff01;&#xff09; 第一&#xff1a;wait 和 notify 方法不是線程對象的方法&#xff0c;是 java 中任何一個 java 對象都有的方法&#xff0c;因為這兩個方法是 Object 類中自帶的。 wait 方…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的停車位檢測系統(Python+PySide6界面+訓練代碼)

摘要&#xff1a;開發停車位檢測系統對于優化停車資源管理和提升用戶體驗至關重要。本篇博客詳細介紹了如何利用深度學習構建一個停車位檢測系統&#xff0c;并提供了完整的實現代碼。該系統基于強大的YOLOv8算法&#xff0c;并結合了YOLOv7、YOLOv6、YOLOv5的性能對比&#xf…