[英]calculating the sum of input numbers in c language
我想使用 c 语言中的指针概念计算输入数字的总和。但是当我编译下面给出的程序时,不会出现 sum 的正确值。 帮我找出我在下面的程序中犯的错误。
#include<stdio.h>
void main()
{
int g , *p;
int sum = 0;
int x=1;
for(int i=1; i<3; i++ )
{
scanf("%d ", &g);
}
p = &g;
while( x < 3){
sum = sum + *p;
p++;
x++;
}
printf("\n sum = %d ",sum);
}
你的g
只有一个integer 所以:
scanf("%d ", &g);
,您将覆盖以前的值。p++;
,该指针将不再有效。 (你认为它会指向哪里?) 如果要在g
中存储三个不同的值,则需要将其设为整数数组。
为此,请对您的代码进行以下更改:
int g[3] , *p; // "g" can now store three different values
int x=0; // Later on - counting from 0 thru 2 in the "while" loop
//...
for (int i=0; i<3; i++) // NOTE: Arrays begin at "0" in C!
{
scanf("%d ", &g[i]); // Store to the element indexed by "i"
}
//...
p = g; // For arrays, don't need the & operator: this will give address of first element
您只能在g
中存储一个数字。
因此, p++;
这里会使p
指向一个无效的地方。
您应该分配一个数组来存储所有输入值。
另请注意,您应该在托管环境中使用标准int main(void)
而不是void main()
,这在 C89 中是非法的,在 C99 或更高版本中是实现定义的,除非您有特殊原因使用非标准签名。
#include<stdio.h>
int main(void)
{
int g[3] , *p;
int sum = 0;
int x=1;
for(int i=1; i<3; i++ )
{
scanf("%d ", &g[i]);
}
p = &g[1];
while( x < 3){
sum = sum + *p;
p++;
x++;
}
printf("\n sum = %d ",sum);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.