C++学习笔记(2)—— 基础2:函数、指针、引用、结构体

C++函数、指针、引用、结构体
摘要由CSDN通过智能技术生成

目录

一、函数

1、一些基本概念

2、函数的声明

3、函数的分文件编写

4、函数可设置默认参数

5、函数的占位参数

6、函数的重载

二、指针

1、基本概念:

2、指针的定义和赋值

3、指针占用的内存空间

4、const修饰指针

5、指针与数组的关系

6、指针和普通变量作为函数参数的区别

7、空指针

8、野指针

三、引用(一种不能修改指向的指针)

1、基本概念:

2、应用的定义和赋值

3、引用作为函数此参数

4、引用作为函数的返回值

5、const修饰引用

四、结构体

1、基本概念:

2、结构体的定义和赋值:

3、在结构体中嵌套结构体

4、结构体作为函数的参数

5、const修饰结构体


前言:学习资料参考自《C++ Primer Plus(第6版)中文版》和B站视频《C++教程从0到1入门编程》黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili

一、函数

1、一些基本概念

  • 函数概述:将一段经常使用的代码封装起来,减少重复
  • 函数的定义语法:

        返回类型  函数名(参数列表)

        {

                主体语句

                return 返回的语句

        }

//例子:函数的定义
int add(int num1,int num2)
{
    int sum=sum1+sum2;
    return sum;
}
  • 调用函数:使用定义好的函数

        格式:函数名(参数)

//例子:函数的调用
int a=1,b=2;
int c=add(a,b);//调用已经定义过的函数
  • 形参与实参

        形参:形式上的参数,函数定义的参数,非真实使用的数据。

        实参:实际参数,函数调用时,实参的值会传递到形参中。

//函数定义
int add(int num1,int num2)//此处的num1,num2称为形参
{
    int sum=sum1+sum2;
    return sum;
}
//函数调用
int a=1,b=2;
int c=add(a,b);//此处的a,b称为实参
  • 参数有无和返回有无

        根据参数、返回有无分为4种形式:无参无返,无参有返,有参有返,有参无返

2、函数的声明

  • 作用:告诉编译器该函数的存在及如何调用,函数的实际主体可单独定义。(编译器要知道函数的存在才能调用,这样定义可以放在调用后面写。)
  •  用法:可多次声明,多次调用。但函数的定义只能有1次。
//声明
int max(int a,int b);
//调用
int aa=1,bb=2;
max(aa,bb)
//定义
int min(int a,int b)
{
    return a>b?a:b;
}

3、函数的分文件编写

        分文件编写的意义:将函数封装到头文件,就可在其他文件调用该函数,增加函数的可复用性。

        步骤:

  1. 创建头文件:.h后缀
  2. 创建源文件:.cpp后缀
  3. 在头文件中写函数声明和定义
  4. 在源文件声明头文件,调用函数
//例子:函数的分文件写法

//先新建以下.h头文件,如文件命名为sawp.h
#include<iostream>
using namespace std;
void swap(int a,int b)
{
    int temp=a;
    a=b;
    a=temp;
    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;
}

//再新建以下.cpp源文件,如命名为swap.cpp
#include<iostream>
using namespace std;
#include"swap.h"//声明头文件
int main
{
    int a=1,b=2;
    swap(a,b);//调用头文件中的函数
    system("pause");
    return 0;
}

4、函数可设置默认参数

用法:

  • 默认参数要放在后面,不能出现后面没默认参数的情况。
  • 只能声明或定义时的其中一种情况写,不能同时都写默认参数
//函数调用的例子
void swap(int a,int b=111,int c=999);//声明,b和c设置了默认参数
//函数调用
int main()
{
    swap(10,20);//参数c使用了默认参数
    return 0;
}
//函数定义
//void swap(int a,int b,int c)//前面声明时已有设置默认参数,故此处定义时不允许设置默认参数
{
    cout<<a<<b<<c<<endl;
}

5、函数的占位参数

概述:占位参数,只占用位置,不参与操作。也可设置默认参数

//使用占位参数例子
void F(int)//无默认参数的占位参数
{
    cout<<1<<endl;
}
void F1(int=9)//有默认参数的占位参数
{
    cout<<9<<endl;
}
//调用函数
int main()
{
    F(9);//调用含占位参数的函数
    F1();//占位参数是默认参数
    return 0;
}

6、函数的重载

        概述:相同的函数名可定义新的内容,提高函数的复用性

        重载条件:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值