C/C++指针的定义及用法

1、首先搞清楚变量与内存的关系:(内存地址就是内存的编号)

(1)内存用于存储数据,最小单元是字节(8bit),每个单元都有一个唯一的编号(即地址:0x00000000~0xFFFFFFFF))。

(2)变量与大小(sizeof操作符,int大小是4字节),变量的大小指的是它在内存中占了几个字节。

(3)变量有地址,变量的地址就是该变量在内存中的位置。可用&号取得地址。

(4)变量的赋值,就是向内存写入数据,读变量的值,就是从内存中读取数据。

(5)每个变量都有自己的内存地址,绝不会有2个变量的内存地址相同。

(6)程序每次运行时,变量的地址是不一样的,无法预测也不需要预测其地址。

#include <stdio.h>

int main()
{
	int a = 0x12345678;

	printf("size=%d\n",sizeof(a));

	printf("Address=%08x\n",&a);

	a=0x04040404;

	return 0;
}

2、如何表示内存地址呢?

地址是整数,是不是可以用int?

但是为了强调他时一个内存地址,提出一些新的类型。

char*:表示一个char型变量的地址。int * :表示一个int型变量的地址。......

	int a = 10;

	//定义一个指针变量pa,类型为int,初始值为&a.
	int* pa = &a ;

关于指针:

1、指针也是变量,是可以变得。

#include <stdio.h>

int main()
{
	int a=10;

	int b=11;

	int* p=&a;//p指向a

	p=&b;//p指向b

	return 0;
}

可以把指针当成一种整型变量。

2、不同类型的指针不能相互赋值的。

3、指针即地址,地址是整数,所以指针是一个整数类型。

3、星号操作:按地址访问

1、使用指针,按地址访问,直接修改内存

*p操作:用于访问p指向的内存进行读写操作。

#include <stdio.h>

int main()
{
	int a=1234;

	int* p=&a;//p指向a所在的内存

	*p=*p+2;

	int b=*p;//取得p指向的内存值

	int c=*p+3;

	return 0;
}

只有指针变量才能用*号操作,其他变量可不行。


版权声明:本文为weixin_41211961原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。