C++学习--指针

通过指针(地址)间接访问内存
指针

空指针:

指针变量指向内存中编号为0的空间–用于初始化指针变量(NULL),内存不可访问(0~255的内存编号系统占用)

int main() {
	int* p = NULL;
	//只要*p就报错
	cout << *p << endl;//报错
	
	return 0;
}

野指针(在程序中尽量避免野指针)

指针变量指向非法的内存空间。

//指针访问内存地址编号为0x1100的空间
	int* p = (int*)0x1100;
	//访问野指针报错
	cout << *p<< endl;

const修饰指针(const在那个前面就那个不能改)

1.const修饰指针 --常量指针 const int *p = &a;(const 在int前面,int值不能改)

特点:指针的指向可以改,但是指针指向的值不能改。

2.const修饰常量–指针常量 int * const p = &a;(const在指针p前面)

特点:指针的指向不可以改,但是指针指向的值能改。

2.const修饰常量,也修饰指针 const int * const p = &a;

特点:指针的指向不可以改,但是指针指向的值也不能改。

指针和数组

利用指针访问数组中的元素:(数组名就是数组的首地址)

在这里插入图片描述

#include <iostream>
using namespace std;

int main() {
	//数组的定义方式:
	/*
	* 1.数据类型 数组名[数组长度]
	* 2.数据类型 数组名[数组长度] = {。。。。。}
	* 3.数据类型 数组名[ ] = {。。。。。}
	* 
	* 连续内存空间,都是相同数据类型
	*/

	//数组名: 内存首地址;sizeof(arr)整个数组的占用内存大小
	//利用指针访问数组
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	//数组首地址
	cout << (int)arr << endl;//16进制强转成10进制
	int* p = arr;
	//数组长度
	cout << sizeof(arr) / sizeof(arr[0]) << endl;

	cout << "数组第一个元素" << *p << endl;

	p++;//int4位,下一个地址
	cout << "数组第2个元素" << *p << endl;

	return 0;
}

指针与函数

值传递–形参改变不了实参;void swap(int p1,int p2){ }
引用传递;void swap(int &p1,int &p2){ }
地址传递。void swap(int *p1,int *p2){ }

指针、数组、函数案例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值