ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言指针变量的定义和使用(精华)

2021-04-29 12:00:01  阅读:298  来源: 互联网

标签:变量 int C语言 地址 pa 精华 数据 指针


一 、定义指针变量

1.1 定义指针变量

与定义普通变量非常类似,不过要在变量名前面加星号*,格式为:

datatype *name;			或者
datatype *name = value;
*表示这是一个指针变量,datatype表示该指针变量所指向的数据的类型 。
例如:int *p1;

1.2 赋值指针变量

p1 是一个指向 int 类型数据的指针变量,至于 p1 究竟指向哪一份数据,应该由赋予它的值决定。再如:

int a = 100;
int *p_a = &a;

在定义指针变量 p_a 的同时对它进行初始化,并将变量 a 的地址赋予它,此时 p_a 就指向了 a。值得注意的是,p_a 需要的一个地址,a 前面必须要加取地址符&,否则是不对的。

1.3 修改指针变量

和普通变量一样,指针变量也可以被多次写入,只要你想,随时都能够改变指针变量的值。
*是一个特殊符号,表明一个变量是指针变量,定义 p1、p2 时必须带。而给 p1、p2 赋值时,因为已经知道了它是一个指针变量,就没必要多此一举再带上,后边可以像使用普通变量一样来使用指针变量。也就是说,
定义指针变量时必须带
*,给指针变量赋值时不能带 *。

//定义普通变量
float a = 99.5, b = 10.6;
char c = '@', d = '#';
//定义指针变量
float *p1 = &a;
char *p2 = &c;
//修改指针变量的值
p1 = &b;
p2 = &d;
假设变量 a、b、c、d 的地址分别为 0X1000、0X1004、0X2000、0X2004,
下面的示意图很好地反映了 p1、p2 指向的变化:

在这里插入图片描述

需要强调的是,p1、p2 的类型分别是float*和char*,
而不是float和char,它们是完全不同的数据类型,读者要引起注意。

指针变量也可以连续定义,例如:

int *a, *b, *c;  //a、b、c 的类型都是 int*
注意每个变量前面都要带*。如果写成下面的形式,
那么只有 a 是指针变量,b、c 都是类型为 int 的普通变量:
int *a, b, c;

二 、使用指针变量

2.1 通过指针变量取得数据

指针变量存储了数据的地址,通过指针变量能够获得该地址上的数据,格式为:

*pointer;

这里的*称为指针运算符,用来取得某个地址上的数据,请看下面的例子:

#include <stdio.h>
int main(){
    int a = 15;
    int *p = &a;
    printf("%d, %d\n", a, *p);  //两种方式都可以输出a的值
    return 0;
}

运行结果:
15, 15

标签:变量,int,C语言,地址,pa,精华,数据,指针
来源: https://blog.csdn.net/qq_40761920/article/details/116262535

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有