1.定义指针 2.使用指针 可以通过解引用的方式来找到指针指向的内存 指针前加*代表解引用,找到指针指向的内存中的数据 3.指针占用内存空间都是4个字节
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int* p;
p = &a;
cout << "a的地址为:" << &a << endl;
cout << "指针p为:" << p << endl;
cout << "a为:" << a << endl;
cout << "*p为:" << *p << endl;
*p = 100;
cout << "a为:" << a << endl;
cout << "*p为:" << *p << endl;
system("pause");
return 0;
}
结果
a的地址为:006FFA74
指针p为:006FFA74
a为:10
*p为:10
a为:100
*p为:100
4.const修饰指针 常量指针 指针指向的值不可以改,指针的指向可以改 5.const修饰常量 指针常量 指针的指向不可以改,指针指向的值可以改 6.const修饰指针和常量 指针的指向和指针指向的值,都不可以改
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int b = 10;
const int* p = &a;
p = &b;
int* const p2 = &a;
*p2 = 100;
const int* const p3 = &a;
system("pause");
return 0;
}
7.数组指针 p4++;//让指针向后偏移4个字节
#include <iostream>
using namespace std;
int main()
{
int arr[] = { 1,3,5,7,9 };
cout << "第一个元素为:" << arr[0] << endl;
int* p4 = arr;
cout << "利用指针访问第一个元素:" << *p4 << endl;
p4++;
cout << "利用指针访问第二个元素:" << *p4 << endl;
cout << "利用指针遍历数组" << endl;
int* p5 = arr;
for (int i = 0; i < 5; i++)
{
cout << *p5 << endl;
p5++;
}
system("pause");
return 0;
}
结果
第一个元素为:1
利用指针访问第一个元素:1
利用指针访问第二个元素:3
利用指针遍历数组
1
3
5
7
9
8.指针和函数: 01.值传递 值传递形参改变不会影响实参,想结果改变得返回值出来 02.地址传递 地址传递可以修饰实参(改变实参)
#include <iostream>
using namespace std;
void swap01(int a, int b)
{
int temp = a;
a = b;
b = temp;
cout << "swap01 a=" << a << endl;
cout << "swap01 b=" << b << endl;
}
void swap02(int* p, int* p2)
{
int temp = *p;
*p = *p2;
*p2 = temp;
cout << "swap02 *p=" << *p << endl;
cout << "swap02 *p2=" << *p2 << endl;
}
int main()
{
int a = 10;
int b = 20;
swap01(a, b);
cout << "a=" << a << endl;
cout << "b=" << b << endl;
swap02(&a, &b);
cout << "a=" << a << endl;
cout << "b=" << b << endl;
system("pause");
return 0;
}
结果
swap01 a=20
swap01 b=10
a=10
b=20
swap02 *p=20
swap02 *p2=10
a=20
b=10
9.案例:封装一个函数,利用冒泡排序,实现对整数型数组的升序排列
#include <iostream>
using namespace std;
void bubbleSort(int * arr,int len)
{
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len -1 - i; 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;
}
}
int main()
{
int arr[] = { 6,3,46,2,69,322,1,64,31,846,7,861,9 };
int len = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, len);
printArray(arr,len);
system("pause");
return 0;
}
结果
1
2
3
6
7
9
31
46
64
69
322
846
861
请按任意键继续. . .
|