C++ 指针

//指针
//程序是在硬盘上以文件的形式存在的
//但它们的运行却是在计算机的内存中发生的

//在C++里,变量类型是根据
//他们的自然边界进行对齐的 

//对齐问题会因为系统平台的不同而不同
//64位系统对应8字节
//32位系统对应4字节

//变量的索引
// 1  通过变量名 
// 2  通过地址

//取地址操作符  &  :获取变量的地址
 
//1  对齐在计算机底层世界处处皆是
//内存对齐,文件对齐
//(程序在编译链接后会被分割成一个一个的区块0
//而区块在文件和内存中要按照一定的规律来对齐) 

//一般32位系统内存对齐值是:1000H==4KB
//一般64位系统内存对齐值是:2000H==8KB
//文件的对齐值:200H

//2   变量的地址在程序执行期间是不会发生变化的
//这是各个系统的一个普遍要求
 
//  同一个程序不同时间加载到内存中
//  同一个变量的地址会发生改变 


//--------------------------------------------------------------

//  地址:计算机内存中的某个位置
//  指针:专门用来存放地址的特殊类型变量

//指针变量声明:
//  int *p;
//  int pp=123;
//  p=&pp; 

//  int *p1,p2,p3;

//   形式说明的指针变量只有一个:p1
//   p2  p3  都是整型变量

//  建议每行只声明一个

//  指针变量前面的类型是用来说明指针指向的
//  数据类型,请务必匹配来使用

//  允许 void类型的指针变量:void *p;  

//  创建变量时,系统将分配一些内存块来用来保存它们的值
//  每个内存块拥有独一无二的地址 
//  变量的地址可以用 &variablename 语法来取得
//  &  “取地址”操作符 
//  可以把地址赋值给一种称为指针的特殊变量
//   指针的类型必须与由它保存其地址的变量的类型一致



/*
 int  a=456;
 
 char b='C';
 
 int *aPointer=&a;
 
 char *bPointer=&b;
 
*/

/*
	这会让程序保留4个内存块。
	两个为变量保留,两个为指针保留
	变量a和变量b里面存放的是变量的值
	两个指针变量存放着指针的值
	这些值是其他变量的地址(首地址) 

*/

/*
	利用指针访问位于该地址的数据
	
	需要对指针进行“解引用”处理 
	 即在指针名前面加一个星号 *
	 
	   int  a=456;
 
 	   int *aPointer=&a;

		*aPointer = a = 456 

		如果 *aPointer=123
		那么 a=123
		
		 
*/ 


#include <iostream>

using namespace std;

int main()
{
	int a=123;
	int *aPointer=&a;
	cout << "a的值是:"<<a<<"\n"; 
	cout << "*aPointer的值是:"<<*aPointer<<"\n";
	cout << "修改后\n"; 
	*aPointer=456;
	cout << "a的值是:"<<a<<"\n"; 
	cout << "*aPointer的值是:"<<*aPointer<<"\n";
} 

/*
	指针所保存的是内存中一个地址
	它并不保存指向的数据的值本省
	因此,务必确保指针对应一个已经存在
	的变量或者已经分配了的内存 
	
	
	*号的用途
	
	 创建指针
	 int  *myPointer = &myInt;
	 
	 对指针解引用
	 *myPointer = 3998; 
	
	
	C++ 允许指针群P  多个指针有同样的值
	int *p1=&myInt;
	int *p2=&myInt;
	
	C++支持无类型(void)指针   
	就是没有被声明为某种特定类型的指针
	 void *vPointer;
	 
	 注:对一个 无类型指针进行解引用前
	 必须把它转换为一种适当的数据类型 
	
*/ 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值