一、C++函數:
函數是一組執行一個任務的語句。每個C++程序至少有一個函數,即主函數main()。函數有很多叫法,比如方法、子例程或程序等等。函數聲明告訴編譯器函數的名稱、返回類型和參數。函數定義提供了函數的實際主體。
return_type?function_name( parameter list )
{
body of the function
}
如果函數要使用參數,則必須聲明接受參數值的變量,這些變量稱為函數的形式參數。形式參數就像函數內的其他局部變量,進入函數被創建,退出函數被銷毀。三種函數傳遞參數的方式:
調用類型 | 描述 |
傳值調用 | 該方法把參數的實際值賦值給函數的形式參數。在這種情況下,修改函數內的形式參數對實際參數沒有影響。 |
指針調用 | 該方法把參數的地址賦值給形式參數。在函數內,該地址用于訪問調用中要用到的實際參數。這意味著,修改形式參數會影響實際參數。 |
引用調用 | 該方法把參數的引用賦值給形式參數。在函數內,該引用用于訪問調用中要用到的實際參數。這意味著,修改形式參數會影響實際參數。 |
傳值調用:
void?swap(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
return;
}
指針調用:
void swap(int *x, int *y){
???int temp;
???temp = *x;???
???*x = *y;???????? ??
*y = temp;???? ?
???return;
}
引用調用:
void swap(int &x, int &y){
???int temp;
???temp = x;
???x = y; ??????
y = temp; ??
???return;
}
二、C++數字:
13.1、C++數字定義:
// 數字定義
short i; int j; long k; float l; double d;
13.2、C++數學運算:
引入數學頭文件<cmath>,可調用的函數:
序號 | 函數 & 描述 |
1 | double cos(double); |
2 | double sin(double); |
3 | double tan(double); |
4 | double log(double); |
5 | double pow(double, double); |
6 | double hypot(double, double); |
7 | double sqrt(double); |
8 | int abs(int); |
9 | double fabs(double); |
10 | double floor(double); |
13.3、C++隨機數:
關于隨機數生成器有兩個相關函數:rand(),該函數只返回一個偽隨機數;生成隨機數之前必須先調用srand()函數。
#include?<iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main () {
int i,j;
srand( (unsigned)time( NULL ) );
for( i = 0; i < 8; i++ ) {
j= rand(); cout <<"隨機數: " << j << endl;
}
return 0;
}
三、C++數組:
C++數組用來存儲一個固定大小的相同類型元素的順序集合。數組中的特定元素可以通過索引訪問。所有的數組都是由連續的內存位置組成。
聲明數組:
type arrayName [ arraySize ];
初始化數組:
Int a[5] = {1,2,3,5,6];
訪問數組元素:
Int i = a[2];
多維數組:
type name[size1][size2]...[sizeN];
四、C++字符串:
C++字符串是使用null字符\0終止的一維字符數組。
char s[] = “example”;
操作字符串的函數:
序號 | 函數 & 目的 |
1 | strcpy(s1, s2); |
2 | strcat(s1, s2); |
3 | strlen(s1); |
4 | strcmp(s1, s2); |
5 | strchr(s1, ch); |
6 | strstr(s1, s2); |
五、C++指針:
每個變量都有一個內存位置,每個內存位置都定義了可使用&運算符訪問的地址。
Int var;
&var //變量的地址。
指針是一個變量,其值為另一個變量的地址,即內存位置的直接地址。
指針的聲明:type *var-name。
#include?<iostream>
using namespace std;
int main () {
int var = 2;
int *p;
p = &var;
cout << "Value of var variable: ";
cout << var << endl;
cout << "Address stored in p variable: ";
cout << p << endl;
cout << "Value of *p variable: ";
cout << *p << endl;
return 0;
}
六、C++引用:
引用變量是一個別名,它是某個已存在變量的另一個名字。一旦把引用初始化為某個變量,就可以使用該引用名稱或變量名稱來指向變量。
創建引用:
Int i = 18;int& j = i;其中&讀作應用,j為一個初始化為i的整型引用。
七、C++日期 & 時間:
為了使用日期和時間相關的函數和結構,C++可以引用<ctime>頭文件,有四個與時間相關的類型:clock_t、time_t、size_t和tm。tm數據結構:
struct?tm {
int tm_sec; // 秒,正常范圍從 0 到 59,但允許至 61
int tm_min; // 分,范圍從 0 到 59
int tm_hour; // 小時,范圍從 0 到 23 int
tm_mday; // 一月中的第幾天,范圍從 1 到 31
int tm_mon; // 月,范圍從 0 到 11
int tm_year; // 自 1900 年起的年數
int tm_wday; // 一周中的第幾天,范圍從 0 到 6,從星期日算起
int tm_yday; // 一年中的第幾天,范圍從 0 到 365,從 1 月 1 日算起
int tm_isdst; // 夏令時
};
時間日期相關函數:
序號 | 函數 & 描述 |
1 | time_t time(time_t *time); |
2 | char *ctime(const time_t *time); |
3 | struct tm *localtime(const time_t *time); |
4 | clock_t clock(void); |
5 | char * asctime ( const struct tm * time ); |
6 | struct tm *gmtime(const time_t *time); |
7 | time_t mktime(struct tm *time); |
8 | double difftime ( time_t time2, time_t time1 ); |
9 | size_t strftime(); |
#include <iostream>
#include <ctime>
using namespace std;
int main( ) {
// 基于當前系統的當前日期/時間
time_t now = time(0);
// 把 now 轉換為字符串形式
char* dt = ctime(&now);
cout << "本地日期和時間:" << dt << endl;
// 把 now 轉換為 tm 結構
tm *gmtm = gmtime(&now);
dt = asctime(gmtm);
cout << "UTC 日期和時間:"<< dt << endl;
}
八、C++輸入輸出:
I/O庫頭文件:
頭文件 | 函數和描述 |
<iostream> | 該文件定義了?cin、cout、cerr?和?clog?對象,分別對應于標準輸入流、標準輸出流、非緩沖標準錯誤流和緩沖標準錯誤流。 |
<iomanip> | 該文件通過所謂的參數化的流操縱器(比如?setw?和?setprecision),來聲明對執行標準化 I/O 有用的服務。 |
<fstream> | 該文件為用戶控制的文件處理聲明服務。我們將在文件和流的相關章節討論它的細節。 |
標準輸出流cout:
cout << "Value of str is : " << str << endl;
標準輸入流cin:
cin >> name;
標準錯誤流cerr:
cerr << "Error message : " << str << endl;
標準日志流clog:
clog?<< "Error message : " << str << endl;
九、C++數據結構:
結構式C++中用戶自定義的可用數據類型,允許存儲不同類型的數據項。
結構定義:
struct type_name {
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
. .
} object_names;
訪問結構成員:使用成員訪問運算符“.”:
struct Books {
char title[10];
char author[10];
char subject[20];
int book_id;
};
Books Book1;
Book1.book_id?= 147258;