/*
* B站学习--[60 - ]
* day6 学习成果
*/
/*
* 7.5 const 修饰指针
*
* 三种情况:
* 1.const修饰指针 -- 常量指针
* 2.const修饰常量 -- 指针常量
* 3.const既修饰指针,有修饰常量
*
* int a = 10;
* int b = 10;
* int * p = &a;
*
* 常量指针:
* const int *p = &a;
* 特点:指针的指向可以修改,但是指针的值不可修改。
* *p = 20;[错误,指针的值不可以改]
* *p = &b;[正确,指针的指向可以修改]
*
*
* 指针常量:
* int * const p = &a;
* 特点:指针的指向不可以修改,指针的值可以修改。
* *p = 20;[正确,指针的值可以改]
* *p = &b;[错误,指针的指向不可以修改]
*
* const既修饰指针,有修饰常量
* const int * const p &a;
* 特点:指针的指向和值都不可以修改。
* *p = 20;[错误,指针的值不可以改]
* *p = &b;[错误,指针的指向不可以修改]
*
*
* 7.6 指针和数组
*
* 利用指针方访问数组中的元素
*
* 7.7 指针和函数
*
* 利用指针作函数参数,可以修改实参的值
*
* 7.8 指针、数组、函数
*
*
*
*
*
*
*/
#include <iostream>
using namespace std;
void test1() {
//1.const修饰指针
int a = 10;
int b = 10;
const int* p = &a;
//指针的值不可以改,指针的指向可以改
//*p = 10;错误
p = &b;
//2.const修饰常量
int* const p2 = &a;
*p2 = 100;//正确
//p2 = &b;错误,指针的指向不可以修改
//3.const修饰指针和常量
const int* const p3 = &a;
//指针的指向 和指针指向的值 都不可以改
//*p = 100;错误
//p3 = &b;错误
}
void test2() {
int arr[] = {0,1,2,3,4,5,6,7,8,9};
cout << "第一个元素为:" << arr[0] << endl;
int* p = arr;//arr就是数组首地址
cout << "利用指针访问第一个元素:" << *p << endl;
//遍历数组
for (int i = 0; i < 10; i++) {
cout << *p << " ";
p++;//让指针向后偏移4个字节
}
cout << endl;
}
//冒泡排序
void bubbleSort(int* arr,int len) {//int* arr 可以写成 int arr[]
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] << " ";
}
cout << endl;
}
void test3() {
int arr[] = { 5,1,2,5,7,4,14,5,2,5,45,63,84,6,9,9,8,45,4,1,25,3,25,9,8 };
int length = sizeof(arr) / sizeof(arr[0]);
cout << "排序前:" << endl;
printArray(arr,length);
bubbleSort(arr,length);
cout << "排序后:" << endl;
printArray(arr,length);
}
int main6() {
test3();
system("pause");
return 0;
}