【发布时间】:2021-03-22 10:14:08
【问题描述】:
在 Visual Studio 2019 中,我尝试在指定位置为 int 指针赋值,但它不起作用。这可能吗?
此外,我如何打印指针的值,而不是地址?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *p =(int*)calloc(10,1);
p[0]=1;
p[1]=0;
p[2]=1;
printf("%d\n",p);
}
谢谢
【问题讨论】:
-
除非
sizeof(int)在您的系统上为 2(不太可能),否则该程序具有未定义的行为。您只为尝试存储 3 个整数的数组分配了 10 个字节。关于打印,使用%d显示指针类型是不正确的,因为指针可能大于 int。正确的说明符是%p。相反,如果您尝试打印其中一个整数,则必须取消引用指针以选择一个:printf("%d\n", p[i]);其中i为 0、1 或 2。但请阅读我关于内存的第一点,因为您有未定义的行为权利现在。 -
我强烈建议您从您尝试学习 C 的任何资源中修改指针。在我个人看来,一种根据内存本身而不是根据 C 的抽象来解释内存的方法是更可取。
标签: c pointers integer printf dynamic-memory-allocation