19420107 发表于 2021-3-6 15:30:56

指针非常简单的问题


请问这两种写法有什么区别吗

一叶枫残 发表于 2021-3-6 15:30:57

前者null表示这个指针谁也不指向,于是这个地址值为0(null宏定义就是0)
后者分配了内存,这个指针就有了地址值
#include<stdio.h>
#include<stdlib.h>

int main()
{
        int *p = NULL;
        int *l=(int*)malloc(sizeof(int));
        printf("p:%x\n",p);
        printf("l:%x",l);
       
        return 0;
}
p:0
l:9f13e0

墙里秋千墙外荡 发表于 2021-3-6 16:05:55

第一种方法中只是定义了一个指针变量,该指针并没有指向一段存储空间,如果要使用还需要进行赋值的
第二种方法中malloc函数则是向计算机申请了一个整型数据的内存空间,它会返回一个指向该段内存空间的指针,然后将该地址赋值给了p,也就是完成了对指针p的赋值工作,我们就可以通过操作p操作这段内存空间了

阳光下的小虫子 发表于 2021-3-6 16:06:31

int *p只定义了一个指向整型数据单元的指针;
p = (int*)malloc(sizeof(int))定义的指针同时分配了计算机一个整型单元大小的空间,由p指向。

Minecraft程序猿 发表于 2021-3-6 18:45:37

第一个是单纯定义空指针,第二个是在堆上申请一块内存空间,然后用指针指向它

411431402 发表于 2021-3-6 19:10:49

3553107168 发表于 2021-3-6 19:11:05

{:7_133:}

1073551873 发表于 2021-3-6 19:11:24

{:5_103:}

3102515355 发表于 2021-3-6 19:11:37

{:9_226:}
页: [1]
查看完整版本: 指针非常简单的问题