#include "swap.h"
//
// Created by mimichen on 2020/5/24.
//
//比较大小
int min(int a, int b) {
return a > b ? b : a;
cout << a << endl;
cout << b << endl;
}
//加法
int add(int num1, int num2) {
int sum = num1 + num2;
return sum;
}
void swap(int num1, int num2) {
int temp = num1;
num1 = num2;
num2 = temp;
return;
}
//比较大小
int max(int a, int b) {
return a > b ? a : b;
}
2、.h文件函数的声明
#include <iostream>
using namespace std;
//
// Created by mimichen on 2020/5/24.
//
#ifndef DAY03_SWAP_H
#define DAY03_SWAP_H
#endif //DAY03_SWAP_H
//函数的声明 函数可以写再main后面
int min (int num1, int num2);
二、指针的含义
//再32位系统 指针都是占4个字节
/**
* int a = 10;
* a (0x0000)【10】
* p 【0x0000】 p变量保存一个地址值 ->指针 指针就是一个地址
*/
int a = 10;
//定义一个指针 数据类型 * 指针变量
int * p;
//让指针指向a地址
p = &a;
cout << "a的地址为:" << &a <<endl;
cout << "指针p为:" << p <<endl;
// a的地址为:0x61fe14
// 指针p为:0x61fe14
//操作指针 指针前加* 代表解引用,找到指针指向的内存的数据 *p -> 10
*p = 1000;
cout << "a为:" << a << endl;
cout << "*p为:" << *p << endl;
//=========================================================
int a = 10 ;
// int *P;
// p = &a;
int *p = &a;
cout << "int * 大小为" << sizeof(p) <<endl;
cout << "int * 大小为" << sizeof(float *) <<endl;
//=========================================================
//指向为内存编号为0的指针叫空指针 空指针指向的内存是不可访问的
//空指针用于对指针初始化
int *p =NULL;
//空指针是不可以访问的 0-255系统占用不可更改
*p = 100;
//=========================================================
//避免使用野指针
//野指针
int *p = (int *) 0x1100;
//不可以访问
cout << *p <<endl;
1、const修饰指针含义
int a = 10;
int b = 10;
//const 修饰指针 -->常量指针 指针指向可以改 指针指向的值不可以修改 const int *p = &a
const int * p1 = &a;
cout << *p1 << endl;
cout << p1 << endl;
//const 修饰常量 -->指针常量 指针指向不可以改 指针指向的值可以修改 int * const p = &a
int * const p2 = &a;
//const int * const p = &a; 都不可以修改
const int * const p3 = &a;
2、指针遍历数组
int arr[10] = {0,1,2,3,4,5,6,7,8,9};
cout << "第一个元素为:" << arr[0] <<endl;
int *p = arr;
//解引用
cout << "第一个元素为:" << *p <<endl;
p++; //指针偏移四个字节
cout << "第二个元素为:" << *p <<endl;
int * p2 = arr;
//利用指针遍历数组
for (int i = 0; i < 10; ++i) {
cout << *p2 << endl;
p2++;
}
3、地址传递(修改实参的值)
int a = 10;
int b = 20;
cout << "a元素为:" << a << endl;
cout << "b元素为:" << b << endl;
//传入a,b的 地址的值
swap2(&a,&b);
cout << "a元素为:" << a << endl;
cout << "b元素为:" << b << endl;
int arr[10] = {4,8,5,9,6,7,2,3,6,2};
int len = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr,10);
printArray(arr,10);
4、小案例
//值传递
void swap(int num1, int num2) {
int temp = num1;
num1 = num2;
num2 = temp;
}
//地址传递
void swap2(int *p1, int *p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
/**
* 冒泡排序
* @param arr 数组首地址
* @param len 数组长度
*/
void bubbleSort(int *arr, int len)
{
for (int i = 0; i < len - 1; ++i)
{
for (int j = 0; j < len - i -1; ++j)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
void printArray(int *arr, int len) {
for (int i = 0; i < len; ++i) {
cout << arr[i] << endl;
}
}