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(字符串对象, ' 按照指定的内容分割.,_?/!@#$%^&*+等等 ')

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