IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 有C基础学习C++第三天(指针) -> 正文阅读

[C++知识库]有C基础学习C++第三天(指针)

1.定义指针
2.使用指针
可以通过解引用的方式来找到指针指向的内存
指针前加*代表解引用,找到指针指向的内存中的数据
3.指针占用内存空间都是4个字节

#include <iostream>
using namespace std;

int main() 
{
	//1.定义指针
	int a = 10;
	int* p;
	p = &a;//p记录a的地址
	cout << "a的地址为:" << &a << endl;
	cout << "指针p为:" << p << endl;
	//指针就是地址

	//2.使用指针
	//可以通过解引用的方式来找到指针指向的内存
	//指针前加*代表解引用,找到指针指向的内存中的数据
	cout << "a为:" << a << endl;
	cout << "*p为:" << *p << endl;
	*p = 100;//改变指针p可以改变a
	cout << "a为:" << a << endl;
	cout << "*p为:" << *p << endl;

	//3.指针占用内存空间都是4个字节
	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()
{
	//1.const修饰指针  常量指针
	int a = 10;
	int b = 10;
	const int* p = &a;
	//指针指向的值不可以改,指针的指向可以改
	//*p = 20; 错误
	p = &b;  //正确

	//2.const修饰常量  指针常量
	//指针的指向不可以改,指针指向的值可以改
	int* const p2 = &a;
	*p2 = 100; //正确
	//p2 = &b    错误

	//3.const修饰指针和常量 
	//指针的指向和指针指向的值,都不可以改
	const int* const p3 = &a;
	//*p3 = 100; //错误
	//p3 = &b;   //错误

	
	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;//arr:数组首地址
	cout << "利用指针访问第一个元素:" << *p4 << endl;
	p4++;//让指针向后偏移4个字节
	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)//a,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()
{
	//指针和函数
	//1.值传递
	int a = 10;
	int b = 20;
	swap01(a, b);//实参a,b的值传到形参a,b
	cout << "a=" << a << endl;//a=10
	cout << "b=" << b << endl;//b=20
	//值传递形参改变不会影响实参,想结果改变得返回值出来

	//2.地址传递
	swap02(&a, &b);
	cout << "a=" << a << endl;//a=10
	cout << "b=" << b << endl;//b=20
	//地址传递可以修饰实参(改变实参)

	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)//arr数组首地址
{
	for (int i = 0; i < len - 1; i++)
	{
		for (int j = 0; j < len -1 - i; j++)
		{
			//如果j > j+1 的值 交换数字
			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
请按任意键继续. . .
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 10:47:31  更:2022-12-25 10:49:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/22 19:41:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码