1、//指针
1.1 //指针基本用法
int main16()
{
int a = 10;
int* p;
//指针记录变量地址
p = &a;
cout << "a的地址是:" << &a << endl;
cout << "指针p是:" << p << endl;
//使用指针
//可以通过解引用的方式来找到指针指向的内存
//指针前加 * 代表解引用,找到指针指向的内存中的数据
cout << "a = " << a << endl;
cout << "*p = " << *p << endl;
system("pause");
return 0;
}
1.2 //几个概念
//空指针:指针变量指向内存中编号为0的空间
//用途:用于对指针变量进行初始化
//注意:空指针不能进行访问
//0~255之间的内存编号是系统占用的,因此不可以访问
//野指针:指向非法的内存空间
1.3 //const修饰指针
int main17()
{
int a = 10;
int b = 20;
//const修饰指针有三种情况:
//1.const修饰指针---常量指针
//特点:指针的指向可以修改,但指针指向的值不可以修改
const int* p = &a; //const离*近,*的不能改
//p = &b; //可以
//*p = 10; //不可以
//2.const修饰常量---指针常量
//特点:指针的指向可以修改,但指针指向的值不可以修改
int* const pp = &a; //const离pp近,pp不能改
//pp = &b; //不可以
//*pp = 10; //可以
//3.const既修饰指针,又修饰常量
//特点:指针的指向和指针指向的值都不可以修改
const int* const ppp = &a;
//ppp = &b; //不可以
//*ppp = 10; //不可以
return 0;
}
1.4 //值传递和地址传递
//值传递
void swap1(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
//地址传递
void swap2(int* p1, int* p2)
{
int temp = *p1;
*p1 = *p2; //注意,要有*才是传值
*p2 = temp;
}
int main18()
{
int a = 10;
int b = 20;
swap1(a, b);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
swap2(&a, &b);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
return 0;
}
1.5 //数组的冒泡排序练习
void MaoPao(int arr[], int len)
{
for (int i = 0;i < len - 1;i++)
{
for (int j = 0;j < len - 1 - i;j++)
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
void ShowArray(int arr[], int len)
{
for (int i = 0;i < len;i++)
{
cout << arr[i] << endl;
}
}
int main19()
{
int arr[] = { 9,8,7,6,5,4,3,2,1 };
int len = sizeof(arr) / sizeof(arr[0]);
MaoPao(arr, len);
ShowArray(arr, len);
return 0;
}
(哔哩哔 哩黑马程序员 C++教程 学习笔记,如有侵权请联系删除)