2、C語言函數、結構體,C++類

備註:本人寫的CC++代碼遵循的是Python規範同時借鑑嚴蔚敏老師的風格

  1. 函數以及傳參方式
    1. 函數定義
    2. 傳參方式(值,址,引用)
    3. 返回值問題:一個或多個返回值處理
    4. 易錯問題分析:內存分配與回收
      • new 動態分配的空間只用調用delete來刪除,否則new創建的變量生命週期就是程序的生命週期
        1. 常見的方式是:new在子函數中調用,delete在別的函數中執行
      • cin.getline()  可以接受空格字符串的輸入
        1. char str[15];  cin.getline(str, 15);
      • String 類不接受空格的輸入:
        1. string str1;  getline(cin, str1);
// 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;
}

 

  1. 結構體:
    1. 例子:
struct stu
{
    int age;
    char name[10];
};

 

  1. 推薦的寫法:
    1. 給別人用時後面加別名:typedef struct{ ...... } 別名;
    2. 自己用前面加別名:typedef struct 別名 { ...... };
  2. class類:
    1. 類名大寫,知識點都在代碼的備註中,好好看
    2. 結構:
#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(字符串對象, ' 按照指定的內容分割.,_?/!@#$%^&*+等等 ')

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章