C 指针不工作的程序
我正在学习使用指针,我做了一个简单的练习,但不幸的是它不起作用,如果你能帮我解决它,我会很高兴的 这个练习-刚刚得到一个值并将其发送给他一个 代码-C 指针不工作的程序,c,pointers,C,Pointers,我正在学习使用指针,我做了一个简单的练习,但不幸的是它不起作用,如果你能帮我解决它,我会很高兴的 这个练习-刚刚得到一个值并将其发送给他一个 代码- #include <stdio.h> void incNum(int* p) { *p++; } int main() { int number = 20; int* p; p = &number; printf("%d\n",number); incNum(&p); printf("%d\n",number)
#include <stdio.h>
void incNum(int* p)
{
*p++;
}
int main()
{
int number = 20;
int* p;
p = &number;
printf("%d\n",number);
incNum(&p);
printf("%d\n",number);
return 0;
}
#包括
无效增量(int*p)
{
*p++;
}
int main()
{
整数=20;
int*p;
p=&number;
printf(“%d\n”,数字);
incNum&p;
printf(“%d\n”,数字);
返回0;
}
非常感谢您的帮助我非常感谢因为您在
incNum
函数中传递了错误的参数,您应该传递incNum(p)代码>或incNum(&number)代码>
incNum(&p)
表示您传递指向数字的指针p
的地址,并递增其值
也*p++
应该是(*p)++代码>您的函数调用错误。应该是
incNum(p);
在函数中,将*p++
更改为(*p)+
,以将数字的值增加1
查看
*p++
转换为*(p++)
,它更改指针并返回指针在更改之前指向的位置的内容(您正在丢弃指针)。你想要的恰恰相反,即(*p)+
除此之外,您还应该调用如下函数:
incNum(p);
作为旁注,请尝试在启用警告的情况下编译(始终这样做)。如果您使用的是gcc,则带有-Wall
标志,例如:
gcc -Wall your_file.c
另外,请确保不要忽略这些警告;) 比方说:
number 20 | 1024
value | Address
具有int*p=&number
:
p 1024 | 1000
value | Address
因此:
incNum(&p) ==> incNum(1000)
*p ==> 1024
(*p)++ ==> 1025
它不是您想要传递的值,因此它应该是incNum(p)==>incNum(1024)
最后,它应该是这样的:
void incNum(int* p)
{
(*p)++;
}
int main(void)
{
int number = 20;
int* p;
p = &number;
printf("%d\n",number);
incNum(p);
printf("%d\n",number);
return 0;
}
OT:至少应该是int main(void)
@user3332897检查更新的答案,你有什么不同吗?谢谢,我忘了添加+,即使接受的答案包含相同的信息(因此它是有效的),我告诉你这一点以备将来参考。你不会打电话给医生,问他“我感觉不好”,然后指望医生给你开处方。你也不能说“仍然不工作”并期望任何人帮助你。在这种情况下,由于每个答案基本上都说了相同的话,您需要编辑您的答案和您拥有的新代码(应用了更改),并解释发生了什么以及为什么您认为它仍然不起作用。