指针内存基础

众所周知指针本质是存放地址的内存变量int* p=&a
指针类型的意义
>
1.指针类型决定了:指针解引用的权限有多大
2.指针类型决定了:指针走一步,能走多远
,p+1是走一个字节,还是四个字节
(一个字节8个比特位)

#include
using namespace std;
int main()
{
	//基础
	int a = 20;  
	//a占四个字节
	//拿到的是a的4个字节中的第一个字节的地址
	//a变成了*p的类型

	//2.指针类型的意义
	//1.指针类型决定了:指针解引用的权限有多大
	//2.指针类型决定了:指针走一步,能走多远
	int arr[10] = { 0 };
	char arr1[10] = {0};
	int* p = arr;
	char* pc =(char*)arr;

	cout << p << endl;
	cout << p + 1 << endl;//跳过4个字节
	cout << pc << endl;
	cout << pc + 1 << endl;//跳过1个字节

	cout << "-----------------------------------" << endl;


	int b = 0x11223344;
	int*pb=&b;

	//1个16进制位表示二进制位
	//0 1 2 3 4 5 6 7 8 9 a b c d e f
	//11111111
	// 8421 ——8+4+2+1=15 = f

	char* p1=NULL;
	double* p2=NULL;
	short* p3=NULL;
	long* p4=NULL;


	cout<<sizeof(p)<<endl;//要么4,要么8,取决于你的操作系统多少位
	cout<<sizeof(p1)<<endl;
	cout<<sizeof(p2)<<endl;
	cout<<sizeof(p3)<<endl;
	cout << sizeof(p4) << endl;


	cout << "-----------------------------" << endl;
	
	int arr2[10] = { 0 };
	int* pa = arr;
	int i = 0;
	int sz = sizeof(arr2) / sizeof(arr2[0]);

	for (i = 0; i < sz; i++)
	{
		*(pa + i) = 1;
	}
	
}

你可能感兴趣的:(算法,数据结构,c++)