写点什么

【C 语言】指针 Two 之 [定义指针变量、有效声明指针、使用指针、指针变量初始化]

作者:泽En
  • 2022 年 5 月 14 日
  • 本文字数:1518 字

    阅读完需:约 5 分钟

【C 语言】指针 Two 之[定义指针变量、有效声明指针、使用指针、指针变量初始化]

​​🚩write in front🚩

🔎​​Hello,大家好我是泽 En,一起共同学习,多多指教(●'◡'●)🔎

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝

✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩

💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🖊

📢2021 年度博客之星物联网与嵌入式开发 TOP5,2021 博客之星 Top100 阿里云专家博主^星级博主 CSDN⇿掘金⇿InfoQ[创作者]

⚔ 定义指针变量

对指针变量的定义包括 个内容↓

  1. 指针类型说明,即为变量为一个指针变量。

  2. 指针变量名。

  3. 变量值(指针)所指向的变量的。

定义指针变量与定义普通变量非常类似,不过要在变量名前面加星号 (*) 格式如下所示↓


*datatype name; 或者 *datatype name = value;


解释: 表示一个指针变量,datatype 表示该* 指针变量所指向的数据的类型。如↓


int *p;// %p打印地址
复制代码


表示 p 这是一个指针变量,变量名即为指针的变量名,类型说明符表示本指针变量所指向的变量的数据类型

p 是指向 int 类型数据的指针变量,至于究竟指向哪一份数据,应该由赋予它的值决定。如下↓代码所示。


int *p1;   // p1 是指向整形变量的指针float *p2; // p2 是指向浮点变量的指针char *p3;  // p3 是指向浮点变量的指针
复制代码


🔥注意:个指针变量只能是指向同类型的变量。


int a = 100;    int *pa = &a;   
复制代码


(1) a 在内存中要分配空间 4 个字节。

(2) 取出 a 的地址赋值给指针变量 papa 说明执行对象是 int 类型。

🔥注意→取地址 a 并不会拿出 4 个字节的地址,只会拿出第一个字节地址。

1 字节 = 8 比特位, 按照十六(0x)进制的方式来的。



💣有效声明指针

有效指针,顾名思义就是可以有效的在程序当中运行不会出现错误的指针类型 😐


int    *ip;    /* 一个整型的指针 */double *dp;    /* 一个 double 型的指针 */float  *fp;    /* 一个浮点型的指针 */char   *ch;    /* 一个字符型的指针 */
复制代码



🗡使用指针

使用指针时会频繁进行以下几个操作:定义一个指针变量把变量地址赋值给指针访问指针变量中可用地址的值。这些是通过使用一元运算符(*) 来返回位于操作数所指定地址的变量的值。下面的实例涉及到了这些操作如下↓


#include<stdio.h>int main(void){    int a = 20;                //a在内存中要分配空间4个字节  int *pa = &a;              //取出a的地址赋值给指针变量pa, pa说明执行对象是int类型!  printf("无改变:%d\n", *pa);
*pa = 30;//进行解引用操作符 *pa 就是通过解引用(pa)里边的地址来找到地址a的值。 printf("改变的:%d\n", *pa);//解引用操作符是可以改变取地址原来的值的!
return 0;}
复制代码


运行结果🖊

a = 20

b = 30

知识内容→上面的结果也是通过指针变量取得数据, 然后再通过解引用(*) 操作符改变取地址原来的值。 指针的解引用可以获取地址赋值给指针变量从而获取数值的大小(这个是初学者有时候不明白的地方,不懂可以多看几遍或者自己上手代码进行调试)



💣指针变量初始化

指针变量初始化是非常重要的,很多初学指针的小伙伴们很容易就会把指针没有进行指针变量的初始化。

如下代码所示↓


#include<stdio.h>int main(void){    int a = 10;     int *p = &a;    printf("*p = %d\n",p);    return 0;}
复制代码


🔥注意→上述代码是错误的,在打印 printf 的时候,p 并没有对其进行解引用操作(找不到 p 的数值) 此时 p 是找不到 a 的地址的,也可以说并没有指向 &a。


如下代码所示↓


#include<stdio.h>int main(void){    int a = 10;     int *p = &a;    printf("*p = %d\n",*p);    return 0;}
复制代码


此时,对其中打印 printf 进行解引用操作找到 a 的地址。运行结果为: *p = 10


🔥注意→在使用指针的时候,是必须要给指针变量进行初始化的,不然就会是野指针。关于野指针是什么这个在后面会说的。


发布于: 刚刚阅读数: 2
用户头像

泽En

关注

一起happy! 2022.01.29 加入

谁也不知道旅途的终点是怎么样的,现在只不过是开始。便全力以赴!终点必将是星辰大海。 2021年度博客之星物联网与嵌入式开发TOP5 2021博客之星Top100 阿里云专家博主^星级博主 CSDN⇿掘金⇿InfoQ[创作者]

评论

发布
暂无评论
【C 语言】指针 Two 之[定义指针变量、有效声明指针、使用指针、指针变量初始化]_5月月更_泽En_InfoQ写作社区