備註:本人寫的CC++代碼遵循的是Python規範同時借鑑嚴蔚敏老師的風格
- 函數以及傳參方式
- 函數定義
- 傳參方式(值,址,引用)
- 返回值問題:一個或多個返回值處理
- 易錯問題分析:內存分配與回收
- new 動態分配的空間只用調用delete來刪除,否則new創建的變量生命週期就是程序的生命週期
- 常見的方式是:new在子函數中調用,delete在別的函數中執行
- cin.getline() 可以接受空格字符串的輸入
- char str[15]; cin.getline(str, 15);
- String 類不接受空格的輸入:
- string str1; getline(cin, str1);
- new 動態分配的空間只用調用delete來刪除,否則new創建的變量生命週期就是程序的生命週期
// lesson_2.cpp : 定義控制檯應用程序的入口點。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
char LowerChar(char ch)
{
if (ch>='a' && ch<='z')
return ch;
else if (ch>='A' && ch<='Z')
return (ch + 32);
else
return ch;
}
char* GetLowerStr(char* ch)
{
char temp = NULL;
for (int i=0; i<strlen(ch); i++) // 備註:strlen只統計有效的字符個數
{
temp = LowerChar(ch[i]);
ch[i] = temp;
}
return ch;
}
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"please input a string"<<endl;
char str[15];
cin.getline(str, 15); // cin.getline()可以接受空格字符串的輸入
char* p = GetLowerStr(str);
cout<<p<<endl; // cout輸出字符串指針內容時只需要給出首地址
return 0;
}
- 結構體:
- 例子:
struct stu
{
int age;
char name[10];
};
- 推薦的寫法:
- 給別人用時後面加別名:typedef struct{ ...... } 別名;
- 自己用前面加別名:typedef struct 別名 { ...... };
- class類:
- 類名大寫,知識點都在代碼的備註中,好好看
- 結構:
#include "stdafx.h"
#include<iostream>
using namespace std;
class STU{
private:
char sno[11];
char name[10];
int age;
protected:
public:
// 缺省構造函數是不帶參數的構造函數
STU(char* Sno, char* Name, int Age); // 構造函數,無返回值,參數可有可無
STU(){
Sno = " "; Name = " "; age = -1;
} // 解決缺省構造函數的方法
~STU(){
/*析構函數(destructor) 與構造函數相反,當對象結束其生命週期,如對象所在的函數已調用完 畢時,系統自動執行析構函數。*/
}
void print(){
cout<<sno<<" "<<name<<" "<<age<<" "<<endl;
} // 類中創建函數
void SetData(char* Sno, char* Name, int Age); // 賦值函數再次聲明
};
STU::STU(char* Sno, char* Name, int Age){
strcpy(sno, Sno);
strcpy(name, Name);
age = Age;
} // ::類限定符; 默認執行的函數
void STU::SetData(char* Sno, char* Name, int Age){
strcpy(sno, Sno);
strcpy(name, Name);
age = Age;
} // 如果不指定調用這個函數,默認執行上面的
int main(void){
// 創建對象同時初始化
STU s1("123123123", "張三", 20); // 通過構造函數完成對象的初始化
// 調用對象內的公用函數
s1.print();
return 0;
}
函數:strtok(字符串對象, ' 按照指定的內容分割.,_?/!@#$%^&*+等等 ')