指针的应用

发布于:2025-05-07 ⋅ 阅读:(47) ⋅ 点赞:(0)

指针

空指针

int main() {
	// 空指针用于给指针变量进行初始化
	int* p = NULL;
	//空指针不可以进行访问
	// 空指针的地址为0, 0-255之间的内存编号是系统占用的,因此不可以访问
	// *p = 100;   访问空指针会报错

	return 0;
}

野指针

#include<iostream>
using namespace std;

int main() {
	/*
		野指针,指针只想非法的内存空间(没有申请的空间)
	*/
	int* p = (int *)0x1100;
	return 0;
}


const 修饰指针

#include<iostream>
using namespace std;

int main() {
	/*常量指针
		指针指向的地址可以修改		p = &b;
		指针指向地址的值不可以修改	*p = 20;会报错
	*/
	int a = 10, b = 20;
	const int *p = &a;
	p = &b;

	/*指针常量
		指针指向的地址不可以修改	p = &b;
		指针指向地址的值可以修改	*p = 20;会报错
	*/
	int* const p = &a;

	/*const即修饰指针,又修饰常量
		指针指向的地址不可以修改	p = &b;
		指针指向地址的值不可以修改	*p = 20;会报错
	*/
	const int* const p = &a;
}

指针指向数组

#include<iostream>
using namespace std;

int main() {
	// 指针指向数组
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	// 默认指向arr的首地址
	int *p = arr;
	// 让p指向数组的下一个地址,p指向的地址向后偏移4个或8个字节
	p++;
	// 让p指向当前位置后的第二个地址
	p = p + 2;
	cout << *p << endl;

	return 0;
}

指针作为参数

#include<iostream>
using namespace std;

int snow(int *a, int *b) {
	return *a + *b;
}
int main() {
	
	int a = 10, b = 20;
	int* p1 = &a;
	int* p2 = &b;
	cout << snow(p1, p2) << endl;

	return 0;
}

指针配合函数使用

#include<iostream>
using namespace std;

void snow(int *arr) {
	// 接收到数组
	for (int i =0; i<=9; i++)
	{
		arr[i] = arr[i] + 1;
		cout << arr[i];
	}
	cout << endl;
}
int main() {
	
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	// 将arr的首地址传递给函数
	snow(arr);
	for (int i = 0; i <= 9; i++)
	{
		cout << arr[i];
	}

	return 0;
}