值传递:函数调用时实参将数值传入给形参
做值传递时,如果形参发生改变,并不会影响实参
如果函数不需要返回值,声明时可以写void
void swap(int num1,int num2) swap是函数名称
{
//返回值不需要时,可以不写return
}
如果要输出 交换前:
代码为:
cout << “交换前:” << endl;
cout << “a=” << a << endl;
system()
函数样式:
无参无返
有参无返
无参有返
int test03()
{
cout <<“this is test03”<<endl;
return 100;
}
int num2 = test03(1000);
有参有返
函数声明
三目运算符: a>b?a:b
函数声明是 函数定义之前先告诉编译器函数的存在。
main函数写在后面,自己写的函数写在前面。
代码是一行一行执行的。
声明可以写多次,但是定义只可以写一次
函数的分文件编写
作用:让代码结构更加清晰
函数分文件编写一般有4步骤。
作用:让代码结构更加清晰
函数分文件编写一般有4个步骤。
1.创建后缀名为.h的头文件
2.创建后缀名为.cpp的源文件
3.在头文件中写函数的声明
4.在源文件中写函数的定义
在源文件中#include “swap.h”
在头文件中#include
using namespace std;
指针的作用:可以通过指针间接访问内存。
可以通过一个指针来保存一个一个地址:指针就是一个地址
定义一个指针:
数据类型 * 指针变量名 int * p;
int a = 10;
int * p;
指针记录变量a的地址
建立关系:p = &a;
使用指针
通过解引用的方式来找到指针指向的内存
指针前加 *代表解引用,找到指针指向的内存中的数据。
*p = 1000;
在32位操作系统下:占用4个字节空间,64位操作系统下占8个字节。
int * p = &a;
X86也就是32位操作系统
空指针:指针变量指向内存中编号为0的空间
用途:初始化指针变量
空指针指向的内存是不可以访问的。
int * p = NULL;
0-255之间的内存编号是系统占用的,因此不可以访问。
要指的话,要重新指。
野指针:指针变量指向非法的内存空间,(,没有权力操作的内存)
int * p = (int *) 0x1100; 语法正确,但运行之后崩了
空指针和野指针都不是我们申请的空间,因此不要访问
const修饰指针:限制不可以改,只读状态
const修饰指针有三种情况
1.const修饰指针 —常量指针
2.const修饰常量 —指针常量
3.const即修饰指针,邮修饰常量
const int * p = &a; 常量指针,指针的指向可以修改,但指针的指向的指不能改
int * const p = &a; 指针常量,指针的指向不可以改,但是指针指向的值可以改。
const int *const p = &a; 指针的指向和指针指向的值都不可以改。
数组和指针
作用:利用指针访问数组中的元素。
int arr[10] = {1,2,3,4,5,6,7,8,9,10}
int * p = arr;
p++;
地址传递会改变实参的值
值传递会改变实参的值
swap02(&a,&b);
&:取值
int arr[10] = {}
int len = sizeof(arr) / sizeof(arr[0]);
在传递时,要传递数组的首地址。
void printArray(int * arr,int len){} 参数1,数组的首地址,参数2,数组的长度。
主函数中:printArray(arr,len);