c语言指针问题,关于动态内存malloc

img

图中ptr不是被等于指向malloc申请的地址么,为什么底下for循环里面scanf还要加&呢?不是已经是地址了么,有没有兄弟能帮忙看看

你可能是搞混指针的概念了

  • malloc申请的空间是在堆区的
  • 而使用arr[1000]这种方法开辟的空间,是在栈区的

这两个之间最大的区别是:malloc开辟的内存空间是动态的,我们可以在程序内部设置realloc进行扩容,而arr[1000]这种方式,程序一开始运行就锁死了
其次,malloc开辟的空间,在自定义函数内部开辟后,还能在main函数中访问。而arr[1000]开辟的空间,出函数就销毁了,在main中无法使用
所以这里scanf内部依旧是要用&,因为你开辟的是int类型的空间,使用方法和数组arr[1000]是完全一致的

如果对你有帮助,还请点个采纳,万分感谢!

最后,请截图提问,谢谢

因为你没有按指针的方式用,而是用变量数组的处理,所以就还需要取地址。

[]等于偏移加解引用