2017-02-11 3 views
1
#include <stdio.h> 

void add_adjacents() { 
    int num1[5] = {1, 2, 3, 4, 5}; 
    int num2[5] = {10, 20, 30, 40, 50}; 
    int final[5]; 

    for (int i=0; i<sizeof(num1); i++) { 
    final[i] = num1[i] + num2[i]; 
    } 

    for (int c=0; c<sizeof(final)/sizeof(final[0]); c++) { 
    printf("%d\n", final[c]); 
    } 
} 

void main() { 
    add_adjacents(); 
} 

Итак, я сделал это без указателей. Но с указателями, вот моя попытка: я все еще новичок в указателях, и я играю с различными практическими проблемами.Как добавить соседние элементы массива в c с указателями?

#include <stdio.h> 

void add_adjacents() { 
    int num1[5] = {1, 2, 3, 4, 5}; 
    int num2[5] = {10, 20, 30, 40, 50}; 
    int final[5]; 


    for (; *num1 != '\0'; *num1++) { 
    *final = *num1 + *num2; 
    } 

    for (int c=0; c<sizeof(final)/sizeof(final[0]); c++) { 
    printf("%d\n", final[c]); 
    } 
} 

void main() { 
    add_adjacents(); 
} 
+1

BLUEPIXY

+1

http://ideone.com/wz4cua – BLUEPIXY

+1

' * num1 ++ ':' num1' - это массив, а не указатель. '* num1! = '\ 0'':' 0' не входит в массив 'num1' – BLUEPIXY

ответ

1

Следующая делает трюк:

void add_adjacents() { 
    int num1[5] = {1, 2, 3, 4, 5}; 
    int num2[5] = {10, 20, 30, 40, 50}; 
    int final[5], c; 

    int *n1= num1, *n2=num2, *f=final; 

    for (; n1<&num1[5];) { 
    *f++ = *n1++ + *n2++; 
    } 

    for (c=0; c<sizeof(final)/sizeof(final[0]); c++) { 
    printf("%d\n", final[c]); 
    } 
} 
-2

попробовать это:

#include <stdio.h> 

void add_adjacents() { 
    int num1[5] = {1, 2, 3, 4, 5}; 
    int num2[5] = {10, 20, 30, 40, 50}; 
    int *final = num1; 




for(int i = 0;i<sizeof(num1)/sizeof(num1[0]);i++) 
*(final + i) = *(num1 + i) + *(num2 + i); 


for (int c=0; c<sizeof(num1)/sizeof(num1[0]); c++) { 
    printf("%d\n", final[c]); 

    } 
} 

main() { 
    add_adjacents(); 
} 
+0

'final' используется неинициализированный. – mch

+0

Пробуйте код и судить @mch –

+0

с предупреждениями: http://ideone.com/N9bBKA или игнорирование предупреждений приводит к ошибке выполнения: http://ideone.com/IOHAPd – mch