我正在尝试使用指针的基本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
不打印该值。是否有任何问题在分配变量i
持续从循环指针?
p为指针。因此,按如下方式将指针赋值给它。
p = &i;
然后在代码中按如下方式使用它。
#include <stdio.h>
int main()
{
int *p;
for(int i=0;i<10;i++){
p = &i;
printf("%d",*p);
}
return 0;
}
修复了使用std::cout作为输出的c++风格。(为什么不在c++中使用printf())
#include <iostream>
int main()
{
int* p{ nullptr }; // initialize before use.
for (int i = 0; i < 10; i++)
{
p = &i;
std::cout << *p << " ";
}
return 0;
}
使用此代码。我想它会成功的
int* p =NULL;
*p = sizeof(i); // casting int to pointer
这里p是一个整型指针,指针是一个变量存储另一个变量的地址。所以你必须把变量i的地址赋值给变量p,比如
p=&i;
在这一行中,您将i的地址存储在变量p中。当你像指向*p一样指向p时,它会给出该地址的值。
#include <stdio.h>
int main()
{
int *p;
for(int i=0;i<10;i++){
p = &i;
printf("%d",*p);
}
return 0;
}