Reputation: 17
Morning, I hope somebody is here suppose I have the following structure or even better an array of structures
struct foo {
int a;
char b[10];
char c;
};
struct foo* bar;
bar = (struct foo*) malloc(sizeof(struct foo)*10);
memset(bar, -1, sizeof(struct foo)*10);
instead of
for (counter = 0; counter < 10; ++counter)
memset(bar[counter],0,sizeof(char)*10);
how to a set b member to 0 in all array of char / b member in all array?
basically my question is a bit similar to this one
Upvotes: 0
Views: 136
Reputation: 1594
I'd like to suggest that rather than using a C-style array of int b[10];
that you use std::array<char,10> b;
instead.
Then you can fill it with zeros this way: b.fill(0);
.
If you need to pass the address of the storage to a C-style function you can do that using b.data()
.
And of course, you can still access its content using b[i]
, but if you want more safety, use b.at(i)
.
http://en.cppreference.com/w/cpp/container/array
Upvotes: 1
Reputation: 58947
You can set the b
member of each array element to zero by setting the b
member of each array element to zero. You were almost there, but:
b
member.
for (counter = 0; counter < 10; ++counter)
memset(bar[counter].b, 0, sizeof bar[counter].b);
Upvotes: 0