我需要找到数组中所有元素的总和,但我无法使用方括号([或])。我似乎已经找到了逻辑,但无法让它发挥作用。请告诉我哪里出错了。 这是我写的程序
#include<stdio.h>
int main()
{
int i,a,n,sum;
int *ptr;
ptr=&a;
printf("Enter the number of elements in an array\n");
scanf("%d",&n);
printf("Enter the array elements\n");
for(i=0;i<n;i++)
{
scanf("%d",ptr+sizeof(int)*i);
}
sum=0;
for(i=0;i<n;i++)
{
sum=sum+*(ptr+sizeof(int)*k);
}
printf("The sum of the elements in the array is %d",sum);
return 0;
}
答案 0 :(得分:3)
C中的指针数组对偶性是
*(p+i) == p[i]
此符号中不需要乘以sizeof
!
答案 1 :(得分:3)
首先,你永远不会为存储数组元素分配内存。所以
int *ptr;//this will be the array
//input n
ptr = malloc(sizeof(int)*n);
现在访问i
的{{1}}元素ptr
已被解析为ptr[i]
,因此您可以将*(ptr+i)
替换为ptr[i]
< / p>
*(ptr+i)
和
for(i=0;i<n;i++)
{
scanf("%d",&(*(ptr+i))); //&ptr[i]
}
答案 2 :(得分:2)
你应该改变你的循环:
for(i=0;i<n;i++)
{
sum=sum+*ptr;
ptr++;
}
答案 3 :(得分:1)
此代码中存在一些问题, (1)您没有为所需的元素数分配内存 (2)您只为第一个元素分配了内存,并且指针指向该内存并递增。这将导致未定义的行为 (3)你不必说指针必须移动的距离(即ptr + ptr + sizeof(int)* i),因为它知道它需要移动sizeof(int)的距离,因为它是一个整数指针
这个代码里面的main应该可以工作(抱歉我必须用C ++编写,请根据需要转换必要的代码),
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a class="slide-btn smoth-scroll" href="#About">Get started</a><a class="slide-btn other-btn smoth-scroll" href="#contact">contact us</a>
谢谢!