当前位置: 首页 > news >正文

C语言| 指针变量的初始化

C语言| 指针的优点-CSDN博客

C语言| 指针变量的定义-CSDN博客

【指针变量的初始化】

1.定义:用赋值语句,让一个指针变量得到另一个变量的地址,使它指向该变量。

2. & 取地址运算符

功能:取其内部所存变量地址,所指向变量中的内容。

指针变量只能存放地址!!!只能用&取地址,对指针变量进行初始化。

3. 举例:

int a, *b; //定义变量a, 指针变量b

b = &a; //指针变量的初始化,用&(取地址运算符)

i. 把变量a的地址,放到了指针变量b中,通过a的地址,指针变量b就能找到a的数据,所以指针变量b就指向了变量a。

ii. a和b是不同的变量,修改它们的值互不干扰。指针变量b是a的地址,b是内存单元的地址,而a是变量a里面的数据,a是内存单元的内容。[一定要区分开内存单元的地址,和内存单元的内容]

iii. int *b; //定义指针变量时,*b只是一个声明,没有其他含义。

上面 b = &a; //给指针变量初始化,当b指向a之后,*b 就完全等同于 a了,可以相互替换。

【指针常见错误】

1 引用未初始化的指针变量

未初始化的指针变量,指向的是无效地址。

只能用&取地址,对指针变量进行初始化。

使用scanf(),必须要先给指针变量初始化!!!

2 往一个存放NULL地址的指针变量里面写入数据

指针变量初始化,指向了一个NULL,这么写是错的,但是在实际编程中经常使用,因为后续还会给指针变量二次赋值。(在该指针变量指向有效地址之前,不要往该地址NULL中写入数据)

NULL指向的是内存中地址为0的内存空间。NULL是定义在stdio.h头文件中的符号常量,它表示的值是0。

【程序代码1】变量的初始化

#include <stdio.h>

int main(void)
{
    int a = 10, *b; //*b 表示定义了一个指针变量b

    b = &a; 

    printf("*b = %d\n", *b); //此时*b 完全等于a
    printf("b = %d\n", b); //b里面存储的是变量a的地址

    return 0;
}
/*
在VC6.0++的运行结果为
-----------------------------------------------
*b = 10
b = 1703728
-----------------------------------------------
*/

【程序代码2】指针变量之间的赋值
直接通过指针变量名进行赋值
1 指针变量的基类型,一定要相同
2 在赋值之前,赋值运算符“=”右边指针变量必须是已经初始化过的,才能进行指针变量间的赋值。
3 可以同时定义初始化指针变量。int c = 12;  int *a = &c; int *b = a;

#include <stdio.h>

int main (void)
{
    int *a, *b;
    int c = 12;

    a = &c;
    b = a; //直接指针变量名之间进行赋值

    printf("*b = %d\n", *b); //此时*b完全等同于c
    printf("b = %d\n", b); //b里面存储的是变量c的地址

    return 0;
}

/*
在VC6.0++的运行结果为
-----------------------------------------------
*b = 12
b = 1703720
-----------------------------------------------
*/

http://www.xdnf.cn/news/547471.html

相关文章:

  • OpenHarmony开源鸿蒙兼容性测试常见问题解答分享
  • 使用 Qt Designer 开发
  • [ARM][汇编] 02.ARM 汇编常用简单指令
  • HOW - 结合 AI 进行 Tailwind 样式开发
  • Secarmy Village: Grayhat Conference靶场
  • SpringMVC所有注解按照使用位置划分
  • 基于matlabcd7.x的无网格近似方法
  • CSS 样式表的四种应用方式详解以及css注释的应用
  • TypeScript与JavaScript的异同
  • MySQL:to many connections连接数过多
  • 指令烧录ORIN NANO操作系统
  • RocketMQ实战—订单系统面临的技术挑战
  • 开放鸿蒙OpenHarmony 5.0.0 Release 兼容性测试实战经验分享
  • 工业数据治理标准规范深度解析
  • 大模型应用开发“扫盲”——基于市场某款智能问数产品的技术架构进行解析与学习
  • 解决git中断显示中文为八进制编码问题
  • 设计模式 - 工厂模式
  • 中断全攻略:单片机优先级与 NVIC 详解(超形象解释)
  • Kubernetes中微服务JVM监控与自动发现的解决方案
  • HarmonyOS5云服务技术分享--云数据库使用指南
  • (十三)深入了解AVFoundation-采集:视频帧采集与实时滤镜处理
  • Https流式输出一次输出一大段,一卡一卡的-解决方案
  • 海康工业相机白平衡比选择器对应的值被重置后,如何恢复原成像
  • 【Unity】DOTween的常用函数解释
  • Java 大视界——Java大数据在智慧交通智能停车诱导系统中的数据融合与实时更新
  • 【数据结构】队列的完整实现
  • 五:操作系统内存管理之连续内存分配
  • 机器学习10-随机森林
  • 解决将cpp编译为dll,使用ctype的cdll调用,printf不输出在终端
  • 算法与数据结构:位运算与快速幂