【星海随笔】C++指针

汇编语言是没有指针概念的。重点对栈和堆操作。

但指针是c++中的一个核心概念,程序员可以直接对内存进行操作的一种工具。使用时要格外小心。

注意指针初始化后可以自增。
如果直接输出ptr ,不加指针,则为内存地址值
例如:0x62feec

int arr[5] = { 0, 1, 2, 3, 4 };
int *ptr = arr;

for(int i=0; i<5;i++){
	cout << *ptr << endl;
	ptr++;
}
//*(ptr++)

也可以指针创建类
例如:

picture *prtmp[2];
//创建一个类名为picture 的指针数组
trangle t1;
//创建一个对象。
prtmp[0] = &t1;
//将对象的引用(别名、内存地址) 传给指针。
prtmp[0] -> setVolue(3,3);
//可以用该位置保存该类对象的内存位置。
//指针可以直接操作该类对象。
prtmp[0] -> printPicture();

如果指针没有初始化,它可能指向一个未知的地址,那么我们在尝试读取数据的时候就可能造成程序崩溃。
此外,在指针初始化的时候,不能使用0以外的整型给指针赋值。

c++还有一种通用的void*指针。
我们知道指针就是地址,指针的类型不过表示了地址指向的位置所存储的数据类型.
void * 只是代表了一个地址

直接对内存地址进行了修改。num的值也就修改了。

int num = 4 ;
int *intPtr = &num;
*intPtr = 3;
cout << "num is :" << num << endl;

普通指针不能指向const变量

const int num = 3;
int *ptr1 = &num; False
const int *ptr2 = &num; //True

const int num1 = 4;
ptr2 = &num1;

int num2 = 5;
ptr2 = &num2;
cout << "*ptr2 : " << *ptr2 << endl;
return 0;
const指针
int *const ptr1 = &num1;
//const指针不能修改指向地址
使用数组指针for循环
#include<iostream>
using namespace std;

//指针的数组和数组的指针

int main()
{
	int arr[5] = { 0, 1, 2, 3, 4 };
	//数组的指针
	int (*arrPtr)[5] = &arr;
	//指针的数组
	int *ptrArr[5] = { &arr[0], &arr[1], &arr[2], &arr[3], &arr[4] };
	cout << "arrPtr: " << arrPtr << endl;
	cout << "*arrPtr:" << *arrPtr << endl;
	for (int i = 0; i < 5;i++)
	{
		cout << ( *arrPtr ) [i] << " ";
		cout << ptrArr[i] << " ";
		cout << *(ptrArr[i] ) << " "<< endl;
	}
	return 0 ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值