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