C++学习摘要3

第六章 函数

学习要点

  • 函数的声明,定义,调用
  • 参数的传递
    值传递、引用传递
  • 变量的作用域
    局部变量、静态变量(static)、外部变量(extern声明外部已经存在)、寄存器变量(register加快访问速度)

  • 内联函数(inline),解决频繁调用函数频繁调用开销问题

  • 预处理器
    -函数重载,具有相同函数名不同参数列表的函数

疑难解惑

  • const和#define的区别
    宏定义只是单纯的字符替换,const是定义一个不能改变的常量,const要检查类型,所以更安全

  • 使用内联函数的注意点
    1.在一个文件中定义的内联函数不能在其余文件中使用
    2.内联函数应该简洁,不能有循环,if,switc语句,否则编译器还是会将其作为非内联函数处理
    3.内联函数要在函数被调用之前声明,否则无效

  • C++中形参和实参的区别
    形参只是函数声明时的参赛,只说明参数名和类型,不是实际参数,不能真正使用.实参是运行时传给函数的参数,是实际的变量

第七章 数组与字符串

学习要点

  • string的三个构造函数
//字符串类测试
    //string 的三个构造函数
    //string str;
    //string str("OK");
    //string str(str1); 
  • 字符串的输入与输出
    使用cin和cout输入输出,这里介绍另外两个函数
    1.cin.getline 2.cin.get
//字符创的输入输出
    char c[] = "China";
    cout<<c<<endl;
    //cin.getline(字符数组名St,字符个数N,结束符);读取但不存储结束符 
    //cin.get(字符数组名St,字符个数N,结束符);不读取也不存储结束符
    char city[80],state[80];
    for(int i=0;i<2;i++){
        cin.getline(city,80,',');
        cin.getline(state,80,'\n');
        cout<<"City:"<<city<<"State:"<<state<<endl;
    }
  • 字符串处理常见函数
    1.字符串拷贝strcpy(char ,char )
    2.字符串连接char * strcat(char ,char )
    3.字符串比较int strcmp(char ,char )
    4.字符串长度int strlen(char *)
    5.大写转小写strlwr(char *)
    6小写转大写strupr(char *)
    7.字符串截取str.substr(pos,length)//pos起长度为length
    8.是否空串str.empty();
    9.插入字符串str.insert(pos,str2);//pos起插入str2
    10.删除字符串str.remove(pos,length)//pos起删除length长度
    11.查找str.find(str1)//返回str1首次出现的位置
    12.查找str.find(str1,pos)//返回pos起,str1首次出现的位置
    13.字符串转换str.c_str()//将字符串转换成c风格的字符串

疑难解惑

  • 使用数组时,如何清0数组
    使用memset,如memset(str,0,sizeof(str));//全体置为0

  • 如何将int类型转换为字符串
    使用itoa函数实现,char * itoa(int value,char *string,int radix);


第八章 指针

学习要点

  • 指针的定义,存储另一个变量的地址的变量
  • 指针本身所占有的内存,根据系统决定,一般是四个字节64位
  • 为什么要用指针
    1.处理堆中存放的大型数据
    2.快速访问类的成员数据和函数
    3.以别名的形式像函数传递参数
  • 指针中常见的符号及概念
    int n=5;
    int *p;//指针声明
    p=&n;//指针赋值
    cout<<"取值"<<*p<<endl;
    cout<<"取p的地址"<<&p<<endl;
    cout<<"取p中存放的地址"<<p<<endl;
  • 函数指针及指针函数
    指针函数 函数的返回值是指针
    函数指针 指向函数的指针
#include<iostream>
using namespace std;
int fun(int a){
    return a;
}
int main(){
    int (*fp)(int a);
    fp=fun;
    cout<<fun(5)<<endl;
    cout<<fp(5)<<endl; 
}
  • 指针的算术运算
    对指针进行加1操作,得到的是下一个元素的地址,而不是原有的地址加1

  • 指针数组和数组指针
    指针数组,存放指针的数组
    数组指针,指向数组的指针

  • void指针,void *可以指向任何类型的数据
  • -多级指针
  • 动态内存分配,C++中使用new 和delete

疑难解惑

  • C++中动态内存分配应该注意什么问题
    1.动态分配内存失败
    2.指针的删除和堆内存释放.指针的删除即delete p.操作,该操作结束后释放p指针指向的堆内存,p指针为空
    3.内存泄漏和重复释放。new返回的指针丢失,无法释放该内存,造成内存泄漏。new出来的内存多次delete造成重复释放。
    4.动态分配的变量或对象的生命期。堆内存只能释放一次。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值