【发布时间】:2021-09-12 05:48:19
【问题描述】:
我正在尝试使用指针的基本 c 程序,这是我的代码
#include <stdio.h>
int main()
{
int *p;
for(int i=0;i<10;i++){
*p = &i;
printf("%d",*p);
}
return 0;
}
输出:
main.c:16:12: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
*p = &i;
^
...Program finished with exit code 0
并且不打印该值。分配从 for 循环到指针的变量 i 是否有任何问题?
【问题讨论】:
-
这更像是“C”而不是“C++”。 (包括
和 printf).. 但是您正在尝试将地址 (&i) 分配给 int (*p),*p 表示 p 指向的东西。所以你的意思可能是“p=&i”。 -
int *p声明了指针p。将地址分配给p时,您将执行p = &i并使用%p转换说明符输出地址,例如printf("%p\n",(void*)p);如果您确实想打印该地址的值,那么您可以使用printf ("%d\n", *p);来打印i的值。 -
一些提供指针基本讨论的链接可能会有所帮助。 Difference between char pp and (char) p? 和 Pointer to pointer of structs indexing out of bounds(?)...(忽略标题,答案讨论指针基础知识)
标签: c++