提示: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;)