具象认识指针

关于我对指针的简单认识

以下是我初读指针后对指针的一些认识,可以帮助初学C语言指针的同学具象地认识指针(提示:以下很多内容是对指针的认识,可以评论,但不喜勿喷)

@凡凡爱吃粉

1. 什么是指针

2.与指针有关的参数传递

3.指针与数组

  1. 什么是指针?
    相信很多人和我一样,初识指针概念时,对指针的认识模棱两可
    书本对指针的定义是:指针是一个变量,一个用来存储地址的对象是指针
    很简单的一句话,直接描述了指针的作用和属性,记住这个概念,因为接下来我对指针的描述都时基于这个概念的。
    补充:*指针是复合类型(复合类型是指依赖于其他类型而存在的类型),指针所依赖的类型是指针所指向的类型(如:int * p,是一个指向于int整型的指针),指针的值是它所指向的对象的地址(看到这,你可能依然不明白,没关系,下面我将用我自己读了指针后在脑海中构思的图表来向你解释,你一定会豁然开朗)。

指针解析图
在这里插入图片描述

***给一个通俗的比方:*把指针看成一个标签,intp的整型指针就是存放所有int整型的地址的标签,上面有int n(在这里我把n当做一切int整型变量的集合)的地址的信息,通过intp,我们可以立马锁定所有int整型位置(这里相对其他类型而言),而int n中又有int a、int b 、int c…等整型变量,这些变量又都有自己特定的地址(也就是变量的物理位置,如:图标中a在第二行第二列),计算机中存储地址的方式是一串十六进制数字:
下面展示一些 内联代码片

int a =56;
printf("%p",a);//%p是取地址的格式说明符;

在这里插入图片描述

由以上例子中看出:当你给a变量初始化后,计算机会在000000000000038这个位置存放a变量的值,同时也有了存放这个地址的指针(属于a变量的指针用来表示a变量的位置),让a变量的指针与a变量的值绑定在一起,由此我们便可以在编程中用a变量的指针(a*p)来获取a变量的值。
下面我将用一段简单代码验证我的表述:

#include<stdio.h>
int main()
{
	int n=456;//这里我们给n初识化,赋值为456
	int*p;//声明整型指针,告诉程序我们接下来要用到整型指针,你可以认为里面有所有整型变量的位置
	printf("%d\n",n);//把n的值打印一下,方便后边程序对比
	p=&n;//把n的地址存放到p指针中,告诉计算机我们要在所有整型变量位置中定位到变量n的位置
	*p=654;//上面说到*p是与a变量的值绑定的,所以认为*p等同与n变量的值456.
	printf("%d",n);//因为在*p中我们把a的值更改了,所有再打印n的值,n的值变成了654.
	return 0;
}

,请细读以上代码注释,里面有详细解释;

  1. 与指针有关的参数传递
    参数传递分为两种:1.值传递 2.指针传递
    指针传递:被调函数的形参列表中有一个或多个指针型参数来接收主调函数传入的指针实参 ;
    如:
int yyds(int* p)//函数名为yyds
{
   int n = 234;//定义并初始化n
   return n;//返回n的值,传到主函数的s中
}
int main()
{
   int s = 456;//定义初始化s
   int* p = &s;//将变量s的地址存到指针p中
   s = yyds(p);//调用使用指针调用上方函数
   printf("%d", s);//s的结果为234
   return 0;
}

int*p=&s:在这句代码中包含三层信息:

  1. 定义并初始化了指针p;
  2. 将s的地址存到了指针p中;
  3. 使用p可以操作变量s中的值;
    3.指针与数组
    当指针与数组结合时,就涉及了很多知识点,在学习这一块知识时,需要理清指针与数组的关系
    在这之前,我们需要明白数组名的有趣用法:当我们定义一个数组arr时,arr是数组名,也代表数组首元素的地址,通过这个地址,我们可以在内存中定位并操作这个数组,那数组与指针结合后呢?
    1.定义一个数组int arr[10],该数组大小为10;2.定义一个整型指针int
    p;
    将数组与指针结合:int*p=arr;这句代码也包含三层信息:1.定义并初始化了一个整型指针。2.将数组arr的首元素的地址存到了指针变量p中。3.通过指针p我们可以操作数组arr中的元素。如:p[i]=arr[i]; p+i=arr+i;

以上是我对指针目前的一些认识,希望能够帮助到你!

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园失物招领系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、公告信息管理、失物招领管理、失物认领管理、寻物启示管理、寻物认领管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 校园失物招领系统管理系统可以提高校园失物招领系统信息管理问题的解决效率,优化校园失物招领系统信息处理流程,保证校园失物招领系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 ,管理员权限操作的功能包括管理公告,管理校园失物招领系统信息,包括失物招领管理,培训管理,寻物启事管理,薪资管理等,可以管理公告。 失物招领管理界面,管理员在失物招领管理界面中可以对界面中显示,可以对失物招领信息的失物招领状态进行查看,可以添加新的失物招领信息等。寻物启事管理界面,管理员在寻物启事管理界面中查看寻物启事种类信息,寻物启事描述信息,新增寻物启事信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值