C语言如何初始化指针?

一、问题

        如何初始化指针?只有初始化的指针才可以使⽤,这个与普通变量没有区别。

二、解答

        定义指针变量之后,必须为其赋具体的值,⽽且指针变量的赋值只能赋予地址,绝对不可以是其他数据,并且要注意数据类型的⼀致。

        下⾯来看⼀个问题程序。 这个程序主要是实现对数据之间使⽤指针进⾏传递,代码如下。

#include <stdio.h>
int main()
{
    int i = 10, j;
    float *p;
    p = &i;
    j = *p;
    printf("i = %d, j = %d\n", i, j);
    return 0;
}

此程序的运⾏结果如下所示。

i = 10, j = 0

        通过运⾏结果可以看出,这并不是程序设计之初的结果。为什么会这样呢?

        在程序中定义 int 类型变量 i 和 j ,并给变量 i 赋初值10,在下⼀⾏定义了⼀个类型为 float 的指针变量 *p ,将 int 类型变量i的地址赋值给 float 型的指针变量 *p 。然后使⽤间接寻址运算符( * )从指针变量 p 所指向的内存地址中的值进⾏读取,并将读取的值赋给 j ,也就是最终设想将 i 的值赋给 j 。

        可是,结果却不是当初设想的那样。因为P指针变量是⼀个 float 类型的指针变量,编译器认为其指向的内存地址保存的是 float 类型数据,进⽽按照 float 型数据的格式从内存中读取数据,然后赋给 j ,所以读出的并不是 int 类型的 i 。 通过上⾯的问题解析就不难修正问题程序了,只要将“ float *p; ”这⼀句代码修改为“ int *p; ”就可以了。

三、总结

        如果对末初始化的指针进⾏操作,可能导致系统混乱,甚⾄导致系统的崩溃,为什么会这样呢?因为刚定义的指针变量中可能有⼀个随机的值。在指针变量中,该值表示的是 ⼀个内存地址。如果该地址正好是操作系统的代码区域,修改该内存中的值就会导致系统崩溃。

相关推荐

  1. C语言如何初始化指针

    2024-04-12 08:30:03       33 阅读
  2. C语言如何初始化字符数组?

    2024-04-12 08:30:03       40 阅读
  3. c++ 指针初始化

    2024-04-12 08:30:03       55 阅读
  4. C语言如何创建指针

    2024-04-12 08:30:03       82 阅读
  5. C语言如何指针表示字符串?

    2024-04-12 08:30:03       32 阅读
  6. C语言如何⽤ const 控制指针

    2024-04-12 08:30:03       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 08:30:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 08:30:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 08:30:03       82 阅读
  4. Python语言-面向对象

    2024-04-12 08:30:03       91 阅读

热门阅读

  1. C++ 运算符

    2024-04-12 08:30:03       30 阅读
  2. TRX节点部署

    2024-04-12 08:30:03       29 阅读
  3. 理解 Nginx 的多站点配置:为每个网站单独配置

    2024-04-12 08:30:03       39 阅读
  4. 学习循环神经网络(RNN)

    2024-04-12 08:30:03       32 阅读
  5. vue监听键盘回车事件的三种方法..

    2024-04-12 08:30:03       39 阅读
  6. wpf 列表为空时,按键不可用

    2024-04-12 08:30:03       32 阅读
  7. win11 如何把微软账户切换成administrator

    2024-04-12 08:30:03       40 阅读
  8. vue 动态组件、异步组件

    2024-04-12 08:30:03       36 阅读
  9. CSS3进阶技巧:Flexbox布局实战与高级应用

    2024-04-12 08:30:03       33 阅读