C语言的指针

【前言】

      可能很多人刚开始学习C语言,对指针是什么东西不是很理解。从个人经验来看,C语言指针确实是个门槛,但如果能够真正理解指针,那么基本上C语言就入门了

【概念】

     在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。这是摘抄百科的定义,这个定义有点生硬。我的理解:指针本质上跟普通的变量没有区别,只不过它是专门用来指向某个地址空间的变量而已。


【普通变量的模型】

    在C语言中定义一个普通变量,那么在内存中就会分配空间,例如:

     int a = 10;

     为了简单起见,假设变量a的地址为0x200,则a的变量模型如下所示:变量的地址是0x200,变量的值是10,变量的名称是a

     


【指针的内存模型】

    下面定义一个指针:

    int a = 10;

    int *p = &a;

    假设指针的地址为0x400,它指向的就是变量a,那模型如下

  

  【指针的用法代码实例】


#include <stdio.h>
#include <string.h>

int main()
{
	int a = 12;
	int b = 20;
    int *p = &a;

	printf("指针p指向变量a:\n");
	printf("value of pointer = 0x%x\n",p);//打印指针的值,此时指针里存放的是变量a的地址
	printf("address of pointer = 0x%x\n",&p);//打印指针的地址
	printf("value of variable by pointer = %d\n",*p);//取指针指向的变量的值

    p = &b;
	printf("指针p指向变量b:\n");
	printf("value of pointer = 0x%x\n",p);//打印指针的值,此时指针里存放的是变量b的地址
	printf("address of pointer = 0x%x\n",&p);//打印指针的地址,由于指针的空间已经分配,则地址不会改变
	printf("value of variable by pointer = %d\n",*p);//取指针指向的变量的值,此时就是指针新指向变量b的值



	getchar();

	return 0;
}
 



总结:

1.指针与普通变量一样,也是要分配空间,有自己的地址和值。指针的地址是编译器分配,指针的值就是其指向对象的地址

2.指针可以改变指向,当将指针的指向由旧的对象指向新的对象,会改变指针的值为新对象的地址,但是不会改变的指针的地址

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值