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检查更新的答案,你有什么不同吗?谢谢,我忘了添加+,即使接受的答案包含相同的信息(因此它是有效的),我告诉你这一点以备将来参考。你不会打电话给医生,问他“我感觉不好”,然后指望医生给你开处方。你也不能说“仍然不工作”并期望任何人帮助你。在这种情况下,由于每个答案基本上都说了相同的话,您需要编辑您的答案和您拥有的新代码(应用了更改),并解释发生了什么以及为什么您认为它仍然不起作用。