C语言指针

指针的本质

C语言指针的本质就是地址,就是计算机中存储的各个变量的内存空间的地址。我们可以通俗的理解指针就是地址,地址就是指针。
看以下代码。

int  a=10//在内存中开辟了一块空间,里面存的是整形变量10这个数字
int *p=&a;定义了一个指针变量,将a的地址存在指针变量里面。

使用图片的方式来帮助各位读者进行理解在这里插入图片描述
定义了一个变量a。里面存储了一个数字10,下面的0x1999就是这一块内存的地址。然后定义了一个指针变量,里面存储的数字就是变量a的地址。这里需要非常注意的一个地方是,指针变量本质上也是一个变量,指针变量的本身也是有地址的,就是写在下面的0x5000,很多新手没有理解这一点,因而遇到指针就头疼。

让我们来编写一段程序体现上面所说的一句话。编译环境VS2012;

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int a=10;
	int *p=&a;
	printf("a的值是  %d\n",a);
	printf("直接对a进行取地址  ,a的地址是   %p\n",&a);

	printf("通过p来查看a的地址           %p\n",p);

	printf("指针变量p的自身地址      %p\n",&p);
	system("pause");
		return 0;
}

`
查看其输出结果。
在这里插入图片描述
指针变量本身也是一个变量,只是他存储的是一个地址罢了,他与其他的变量没有任何本质上的区别,切记,切记,切记。

指针的使用

如果理解了前面的部分,其实对于一些日常的使用来说,已经是不难的了。
在这里只写一点指针和结构图的关系,毕竟数据结构才是使用指针非常多的地方。

struct person
{
int age;
char name[20];
};

这定义了一个关于人的年龄和名字的结构体,里面存了两个变量。

struct person  person1,*person2;
person2=&person1;

在主函数里面定义了两个结构体的变量。并且将第一个的地址赋值给了第二个。
需要注意的是,该结构体占用的内存是很大的,因此指针变量里面存的并不是整个的地址,只是一个首地址。通过该首地址就可以访问整个结构体。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值