Array inside the structure

I want to create a structure containing fixed-size arrays inside:

struct smt{
   int array1[3];
   int array2[10];
   int bananas;
};

So I can use it in my main code. However, when I try to fill arrays, I always get an error message:

int main(){
   smt name;
   name.array1 = {1,2,3};

   return 0;
}

Errors on name.array1 = {...}; line:

error C2059: syntax error : '{'
error C2143: syntax error : missing ';' before '{'
error C2143: syntax error : missing ';' before '}'

Any help would be greatly appreciated. I tried to find similar problems, but so far have not found anything useful.

+4
source share
4 answers

You cannot do it this way if it is not in initialization. You must do:

name.array1[0] = 1;
name.array1[1] = 2;
name.array1[2] = 3;

Talk to :

, - , . - int i; = 0; " i". i, . "", .

+5

{...} .

, .

:

struct smt {
  int array1[3];
  int array2[10];
  int bananas;
};

struct smt mystruct = { 
   { 1, 2, 3 },
   { 1, 2 ,3 ,4 5, 6, 7, 8, 9, 10 },
   0
};

, C99 ( ++) , , :

struct smt mystruct = { 
   .array1  = { 1, 2, 3 },
   .array2  = { 1, 2 ,3 ,4 5, 6, 7, 8, 9, 10 },
   .bananas = 0
};
+4

++ 11 ( ++ 03, smt - POD).

#include <iostream>
using namespace std;

struct smt{
  int array1[3];
  int array2[10];
  int bananas;
};

int main() {
//I use {} to do a value-initialization (to zero) of array2
smt s={{0,1,2},{},5};

std::cout<<s.array1[0]<<std::endl;
return 0;
}

, std::array :

std::array<int,4> a;
a={1,2,3,4};

std::array, .

+1

name.array1 = {1,2,3};

. . .

.

smt name = { { 1, 2, 3 } };

, 1, 2, 3 , std:: iota.

std::iota( std::begin( name.array1 ), std::end( name.array1 ), 1 );

, ,

name.array1[0] = 1;

, , std:: array.

#include <array>
struct smt{
   std::array<int, 3> array1;
   std::array<int, 10> array2;
   int bananas;
};

,

int main(){
   smt name;
   name.array1 = {1,2,3};

   return 0;
}

, ++ 2011.

0
source

Source: https://habr.com/ru/post/1526350/


All Articles