C 语言----- 指针

  指针是一个值为内存地址的变量, 指针的核心是它是一个变量, 只不过它是用来存放内存地址的。在了解指针之前,先说一下什么是变量。变量就是在内存中开辟的一个空间。如int year, 就是在内存中开辟了一个空间,空间名称为year, 开辟空间做什么呢?肯定是存放程序运行中所需要的东西,在计算机语言中,存放东西就是赋值。year= 2018, 给year赋值,就是在year这个空间存放一个整数2018; 开辟了空间,也存放了数值,那我们要使用这个空间中的东西怎么办?我们怎样才能找到这个空间?当然,最简单的办法,是直接使用名称year, 其实还有一种办法,就是找到这个空间的地址,找到地址后,我们就可以做任何事情了。内存在开辟空间的时候,它自动就会有一个地址,这个地址就是内存地址,这和我们日常生活也是一样的道理。比如开发商拿了一块地,它就相当于开辟了空间。拿地的同时,也就是开辟空间的时候,它自动会有一个地址,他在广东省拿的地,地址肯定是广东省,而不是北京,并且地址也不会再发生变化。只不过地址描述方式不同,在现实生活中,它是广东省深市圳,而在计算机中,它是一个十六进制的数字发, oXc522;

  每一个变量都有地址,我们想要操作这个地址,就要把地址获取到并保存起来,保存东西就是用 变量, 这个变量保存内存地址,所以起了个名字就是指针。指针的变量的声明也不一样,用* 声明。 int *point_year.  怎么获取变量地址用&  &year 就取得了year内存地址, 那么它就可赋值组point_year 变量。 point_year = &year,  point_year 保存的是year的内存地址,所以也可以称之为point_year 指向了year.   在这里有一个特数的常量,NULL, 表示为空, 如point_year = NULL, 表示指针不指向任何地址。

当* 作为运算符的时候,叫做取地址所对应的值,所以它只能放在指针变量的前面, 取出地址所指向的值,那就是变量。*point_year 的值就是变量year.  *point_year = 10; 其实就是对量year赋值。

   指针变量也是变量,所以它也有地址,&point_year 就是取指针变量对应的地址。它是一个地址,所以还要声明一个指针变量 int *ptr_ptr_year = &point_year.  那么我们*运算符也是可以取地址*ptr_ptr_year返回的是point_year, 然而它也是一个指针变量,*point_year 才是指向的变量。**ptr_ptr_year 批向了year,  **ptr_ptr_year = 10, 同样是给它变量year赋值。

猜你喜欢

转载自www.cnblogs.com/SamWeb/p/8735128.html