在不使用[或]的情况下查找数组中的元素总和

时间:2017-11-01 04:56:46

标签: c arrays pointers

我需要找到数组中所有元素的总和,但我无法使用方括号([或])。我似乎已经找到了逻辑,但无法让它发挥作用。请告诉我哪里出错了。 这是我写的程序

#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; 
} 

4 个答案:

答案 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>

谢谢!