обработка массива в функции

61
14 февраля 2018, 11:50
 uint32_t algorytm (uint32_t a, uint32_t b, uint32_t c, uint32_t d, uint32_t 
 e, uint32_t f, uint32_t g, uint32_t h, uint32_t k[], uint32_t w[]){
 for (int i = 0; i < 64; ++i){
 uint32_t t1 = h + a + e + k[i] + w[i];
 uint32_t t2 = a + b;
 h = g; g = f; f = e; e = d + t1; d = c; c = b; b = a; a = t1 + t2;}  
int main(){
uint32_t n[8] = {1,2,3,4,5,6,7,8}; // для примера
uint32_t a = n[0], b = n[1], c = n[2], d = n[3], e = n[4], f = n[5], g = 
n[6], h = n[7]; 
algorytm (a, b,  c,  d,  e,  f,  g,  h, k[], w[]);
uint32_t m[0] = n[0] + a, m[1] =n[1] + b, m[2] =n[2] + c, m[3] =n[3] + d, 
m[4] =n[4] + e, m[5] =n[5] + f, m[6] =n[6] + g, m[7] =n[7] + h;
return 0;
}

как все таки верно передать массив в функцию написано типа так: func(int a, int b, int w[], int i) где i это размер массива, но так не работает почему то. у меня два массива по 64 элемента, не могу сделать функцию

Answer 1

При вызове функции нужно писать не:

algorytm (a, b,  c,  d,  e,  f,  g,  h, k[], w[]);

а:

algorytm (a, b,  c,  d,  e,  f,  g,  h, k, w);

так, как вы передаете указаетли на массивы. Тобишь в определении ф-ции: int m[] и int *m - эквивалентны.

Answer 2
#include <stdio.h>
#define NUMBERS_NUM 10 // количество чисел в массиве
int sum(int* array, int numbers_num) {
    int sum = 0;
    for (int i = 0; i < numbers_num; ++i)
        sum += array[i];
    return sum;
}
int main() {
    int array[NUMBERS_NUM] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    // Когда мы пишем sum(array, ...), мы передаем в функцию адрес первого элемента массива (int*).  
    printf("%i\n", sum(array, NUMBERS_NUM));
}
READ ALSO
ошибка компиляции Opencl gcc

ошибка компиляции Opencl gcc

cl_image_desc desc; просит заменить на cl_image_info desc;

85
Конвертировать в кодировку UTF8

Конвертировать в кодировку UTF8

Есть замечательный способ создать строку уже в кодировке utf8:

83
SFINAE перегрузка по сигнатуре Callable-объекта

SFINAE перегрузка по сигнатуре Callable-объекта

Ребята, помогите написать перегруженную функцию, которая принимает на вход произвольный Callable объект:

85