C语言基础学习day09

指针

地址和指针的概念

内存区的每一个字节有一个编号,这就是“地址” 。如果在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单元。

在C语言中,对变量的访问有两种方式,直接访问和间接访问。

关于直接访问和间接访问

直接访问如:a=5; 系统在编译时,已经对变量分配了地址,例如,若变量a分配的地址是2000,则该语句的作用就是把常数5保存到地址为2000的单元。

间接访问如:scanf("%d",&a); 调用函数时,把变量a的地址传递给函数scanf,函数首先把该地址保存到一个单元中,然后把从键盘接收的数据通过所存储的地址保存到a变量中。

初识指针

在C语言中,指针是一种特殊的变量,它是存放地址的。假设我们定义了一个指针变量 int *i_pointer

用来存放整型变量 i 的地址。 可以通过语句:i_pointer =&i;

将i的地址(2000)存放到i_pointer中。这时, i_pointer的值就是(2000) ,即变量i所占用单元的起始地址。

要存取变量i的值,可以采用间接方式:先找到存放“i的地址”的变量i_pointer ,从中取出i的地址(2000),然后取出i的值3。

 

 

初识两个操作符“*”和“&”

*:叫做取值操作符

&:而这玩意叫做取址操作符

#include<stdio.h>
void main()
{
       int i = 2000;

       int *pointer;

       pointer = &i;

       printf("%d\n", pointer);  //打印地址6487572
 } 
#include<stdio.h>
void main()
{
       int i = 2000;

       int *pointer;

       pointer = &i;

       printf("%d\n", *pointer);//打印这个地址所储存的值2000
 } 

指针和指针变量

知道了一个变量的地址,就可以通过这个地址来访问这个变量,因此,又把变量的地址称为该变量的“指针” 。 指针指的是地址

C语言中可以定义一类特殊的变量,这些变量专门用来存放变量的地址,称为指针变量。

注意:指针变量的值(即指针变量中存放的值)是地址(即指针)。请区分“指针”和“指针变量”这两个概念。

定义指针变量时要注意两点

一、指针变量前面的“*”,表示该变量的类型为指针型变量。

       其一般形式为: 类型说明符 *变量名;

       其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。

       例如: float *pointer_1; 指针变量名是pointer_1 ,而不是* pointer_1 

二、在定义指针变量时必须指定基类型。(指针指向变量的类型)

       需要特别注意的是,只有整型变量的地址才能放到指向整型变量的指针变量中。下面的赋值是错误的∶

       float a;

       int * pointer_1;

       pointer_1=&a; /*将float型变量的地址放到指向整型变量的指 针变量中,错误 */

 

猜你喜欢

转载自www.cnblogs.com/yangyuqing/p/10285938.html