【学习笔记】C语言指针

admin 2022年12月3日16:22:02评论14 views字数 1057阅读3分31秒阅读模式

[huayang]

C语言指针变量的定义和使用

数据在内存中的地址也称为指针,如果一个变量存储了一份数据的指针,我们就称它为指针变量。

定义指针变量

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

int *p1;

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

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

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

和普通变量一样,指针变量也可以被多次写入,只要你想,随时都能够改变指针变量的值,请看下面的代码:

//定义普通变量
float a = 99.5, b = 10.6;
char c = '@', d = '#';
//定义指针变量
float *p1 = &a;
char *p2 = &c;
//修改指针变量的值
p1 = &b;
p2 = &d;

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

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

    int *a, *b, *c;  //a、b、c 的类型都是 int*

通过指针变量取得数据

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

运行结果:
15, 15

也就是说,使用指针是间接获取数据,使用变量名是直接获取数据,前者比后者的代价要高。

指针除了可以获取内存上的数据,也可以修改内存上的数据,例如:

    #include <stdio.h>
    int main(){
        int a = 15, b = 99, c = 222;
        int *p = &a;  //定义指针变量
        *p = b;  //通过指针变量修改内存上的数据
        c = *p;  //通过指针变量获取内存上的数据
        printf("%d, %d, %d, %d\n", a, b, c, *p);
        return 0;
    }

运行结果:
99, 99, 99, 99

这里的*p是修改指针数据而不是赋值

*在不同的场景下有不同的作用:*可以用在指针变量的定义中,表明这是一个指针变量,以和普通变量区分开;使用指针变量时在前面加*表示获取指针指向的数据,或者说表示的是指针指向的数据本身。

[/huayang]

FROM:浅浅淡淡[hellohy]

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年12月3日16:22:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【学习笔记】C语言指针https://cn-sec.com/archives/1442834.html

发表评论

匿名网友 填写信息