C语言——指针变量

“指针”就是“地址”。

指针变量的定义与初始化

定义格式
类型标识符 *指针变量名[=指针表达式];

  • 指针变量的定义标识符是“*”,它用来定义变量为一个指针变量,不可省略;在 * 和指针变量之间可以有空格,也可以没有空格。
  • “数据类型”是指该指针变量指向的变量的数据类型。

例如:
int *pointer_i; //定义一个指向整型值的指针变量pointer_i
int是数据类型名,说明pointer_i只能存放int类型变量的地址。
任意一个指针变量都要遵循“先定义,再初始化再使用”的原则。
指针变量初始化就是赋予一个初始的地址值。
例如,下面语句定义了一个字符型指针变量pointer_ch,ch;其中pointer_ch指向字符变量ch:
char ch;
char *pointer_ch = &ch;
指针可以初始化为0、NULL或者一个空指针。在C语言中,指针类型也是一种数据类型。void *是一个特殊的类型关键字,它只能用来定义指针变量,表示该指针变量无类型;或者只指向一个存储单元,不指向任何具体的数据类型。
注意:不能把一个数据赋给指针变量,例如:int *pointer_i = 1000;

指针运算符(&和*)

1.取地址运算符“&”
取地址运算符“&”的功能是取变量的地址,返回操作对象在内存中的存储地址。例如&i表示取变量i的地址。&只能用于一个具体的变量或者数组元素,而不能是表达式或者常量。
格式: &变量名
例如:pointer_ch = &ch; //将变量ch的地址赋给指针变量pointer_ch

2.取内容运算符“*”
取内容运算符“ * ”不是乘号,而是用来表示指针变量所指向的存储单元中的内容。在“*”运算符之后的变量必须是指针变量。
格式: *变量名
例如:char ch, *pointer_ch; //定义了一个字符的变量ch和一个指向字符型变量的指针变量pointer_ch
注意:取地址运算符“&”和取内容运算符“ * ”都是单目运算符,其结合性为自右至左。即 *&i的结果为i; &*i的结果也为i。

指针变量的赋值

  • 通过取地址运算符(&)把一个变量的地址赋给指针变量。

  • 同类型指针变量之间可以直接赋值,可以把一个指针变量的值赋给另一个指针变量。
    例如:
    int i;
    int *pointer_int1,*pointer_int2; //定义了两个指向整型变量的指针pointer_int1和pointer_int2
    pointer_int1 = &i; //将指针变量pointer_int1初始化为变量i的地址
    pointer_int2 = pointer_int1; //通过赋值将指针变量pointer_int1的值赋予pointer_int2
    执行以上语句后,指针变量pointer_int1和pointer_int2同时指向了变量i。

  • 给指针变量赋空值。此时该指针变量为空指针,没有指向任何对象。
    例如:
    int *pointer_int;
    pointer_int = NULL;//表示指针变量pointer_int的值为空

综合代码案例(通过指针判断两个数中的较大者):

#include <stdio.h>
int main()
{
    int i,j,temp_max,*p_i,*p_j,*p_max;
    p_i = &i;           //对3个指针变量进行初始化
    p_j = &j;
    p_max =&temp_max;
    scanf("%d%d",p_i,p_j);  //输入两个整数,依次存入变量i,j
    *p_max = *p_i;
    if(*p_max < *p_j)
        *p_max = *p_j;
    printf("The max value is:%d\n",temp_max);
    system("pause");
    return 0;
}

程序运行时输入:
在这里插入图片描述

程序运行结果:
在这里插入图片描述

谢谢浏览!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值