Инициализация динамического массива при создании

kab18
Дата: 12.11.2014 17:50:24
Возможно ли это сделать с динамическим массивом по типу обычного массива?
float Exp[NumbOfExp]={5.56,5.46,5.34,5.36,5.58,5.33,5.79,5.67,
   5.54,5.27,5.45,5.61,5.53,5.4,5.47,5.49,5.65,5.71,5.39,5.64,5.48,
   5.11,5.46,5.45,5.46,5.5,5.7,5.73,5.32,5.2,5.45,5.41,5.41,5.49,
   5.19,5.54,5.71,4.97,5.21,5.23,5.39,5.31,5.48,5.68,5.6,5.4,5.85,
   5.35,5.73,5.33,5.37,5.57,5.39,5.51,5.63,5.58,5.44,5.72,5.59,
   5.37,5.46,5.33,5.11,5.5,5.48,5.42,5.47,5.49,5.38,5.24,5.59,
   5.11,5.42,5.68,5.27,5.29,5.48,5.61,5.25,5.55,5.61,5.54,5.48,
   5.21,5.22,5.05,5.47,5.57,5.26,5.6,5.31,5.43,5.49,5.38,5.37,5.79,
   5.55,5.69,5.81,5.51};
White Owl
Дата: 12.11.2014 18:03:17
kab18
Возможно ли это сделать с динамическим массивом по типу обычного массива?

А смысл?

Если у тебя есть инициализация массива на старте, то эти самые инициализирующие данные где-то должны хранится?
kab18
Дата: 12.11.2014 18:08:48
White Owl,
я хочу создать функцию которая бы работал с массивами разной размерности, поэтому я не могу его сделать статическим. легче сделать все массивы динамическими, передавать размерность и указатель в функцию. данные все должны быть в коде программы.
Dimitry Sibiryakov
Дата: 12.11.2014 18:11:31

kab18
я не могу его сделать статическим

Что мешает?

Posted via ActualForum NNTP Server 1.5

White Owl
Дата: 12.11.2014 18:20:05
#include <stdio.h>
#include <stdlib.h>

int sum( int *arr, unsigned int size) {
   unsigned int i;
   int s = 0;
   for(i=0; i<size; i++) {
      s += arr[i];
   }
   return s;
}

int a[] = {1,2,3};

int main( int argc, char **argv) {
    int b[] = {1,2,3,4,5,6};

    int *c = malloc(sizeof(int) * 5);
    c[0] = c[1] = c[2] = c[3] = 2;
    c[4] = 1;

    printf("a = %d\n", sum(a, sizeof(a)/sizeof(int)));
    printf("b = %d\n", sum(b, sizeof(b)/sizeof(b[0])));
    printf("c = %d\n", sum(c, 5));
    return 0;
}
kab18
Дата: 12.11.2014 18:24:51
Dimitry Sibiryakov,
Я понял, для передачи статического массива в функцию достаточно поставить указатель в шапке функции.
mayton
Дата: 12.11.2014 19:34:12
+

(apply '+ (list 5.56 5.46 5.34 5.36 5.58 5.33 5.79 5.67 
   5.54 5.27 5.45 5.61 5.53 5.4 5.47 5.49 5.65 5.71 5.39 5.64 5.48 
   5.11 5.46 5.45 5.46 5.5 5.7 5.73 5.32 5.2 5.45 5.41 5.41 5.49 
   5.19 5.54 5.71 4.97 5.21 5.23 5.39 5.31 5.48 5.68 5.6 5.4 5.85 
   5.35 5.73 5.33 5.37 5.57 5.39 5.51 5.63 5.58 5.44 5.72 5.59 
   5.37 5.46 5.33 5.11 5.5 5.48 5.42 5.47 5.49 5.38 5.24 5.59 
   5.11 5.42 5.68 5.27 5.29 5.48 5.61 5.25 5.55 5.61 5.54 5.48 
   5.21 5.22 5.05 5.47 5.57 5.26 5.6 5.31 5.43 5.49 5.38 5.37 5.79 
   5.55 5.69 5.81 5.51))
MasterZiv
Дата: 12.11.2014 20:46:33
kab18
Возможно ли это сделать с динамическим массивом по типу обычного массива?[src c++]


Это можно делать только в С++ 0x11 с помощью инициализаторов.
Там кажется немного другой синтаксис (а может такой же).

Ну и чтобы что-то инициализировать, это что-то должно быть классом, просто голый массив, созданный динамически, инициализировать, кажется, нельзя.
Надо посмотреть в последний стандарт...
SashaMercury
Дата: 13.11.2014 02:10:07
kab18
Dimitry Sibiryakov,
Я понял, для передачи статического массива в функцию достаточно поставить указатель в шапке функции.


глупости. что за поставить указатель в шапке функции ? В какой шапке ещё, есть передаваемые параметры, есть прототип функции, изъясняйтесь используя терминологию. Поставить ? Передать.

Имя массива есть указательное выражение. Если вы передаёте массив в функцию, то вы передаёте местоположения начала этого массива, и тип данных элемента массива(это подразумевается). Оба способа передачи полностью идентичны, в любом случае вы передаёте адрес первого элемента.