Dúvida básica de sizeof em Struct [RESOLVIDO]

1. Dúvida básica de sizeof em Struct [RESOLVIDO]

Apprentice X
ApprenticeX

(usa Slackware)

Enviado em 24/01/2022 - 21:55h

Boa Noite a Todos

Gostaria de saber se existe alguma forma de saber o sizeof(struct IDDatabase) da struct abaixo resultando no valor 30 que é a soma dos elementos dela sem precisar declarar o identificador, pois não costumo usar identificador por nunca precisar!
// struct IDDatabase {
struct {
char Col1[10],
Col2[10],
Col3[10];
} Database[] = { {"carla" , "deia" , "m"},
{"brenda", "lilia" , "h"},
{"amanda", "karol" , "c"},
{"amanda", "july" , "b"},
{"brenda", "debora", "a"}};



  


2. MELHOR RESPOSTA

berghetti
berghetti

(usa Debian)

Enviado em 26/01/2022 - 19:08h


Para o tamanho de:

um elemento
sizeof Databse[0] 


de todo o array
sizeof Database 


quantos elementos tem no array
sizeof Database / sizeof Database[0] 


3. Re: Dúvida básica de sizeof em Struct [RESOLVIDO]

Apprentice X
ApprenticeX

(usa Slackware)

Enviado em 26/01/2022 - 20:25h

berghetti escreveu:
Para o tamanho de: um elemento
sizeof Databse[0] 

Vamos ver se eu entendi corretamente!
Então sizeof Database[0] é a mesma coisa que sizeof(struct IDDatabase)??? Pode me responder?

Pois em meus testes, ao menos nessa struct que mostro no exemplo, bateu 100% os valores, alterei os valores de cada elemento dela e bateu tudo certo!
E nesse sentido, era tudo o que eu queria mesmo! Não precisar declarar um Identificador!


4. Re: Dúvida básica de sizeof em Struct

Paulo
paulo1205

(usa Ubuntu)

Enviado em 29/01/2022 - 22:34h

ApprenticeX escreveu:

berghetti escreveu:
Para o tamanho de: um elemento
sizeof Databse[0] 

Vamos ver se eu entendi corretamente!
Então sizeof Database[0] é a mesma coisa que sizeof(struct IDDatabase)??? Pode me responder?


Se uma variável v é do tipo T, então necessariamente sizeof v==sizeof (T). Se v é um array com N elementos do tipo T, então sizeof v==N*sizeof (T) e sizeof v[n]==sizeof (T) para qualquer valor de n (mesmo valores fora da faixa de 0 a N).

Pois em meus testes, ao menos nessa struct que mostro no exemplo, bateu 100% os valores, alterei os valores de cada elemento dela e bateu tudo certo!
E nesse sentido, era tudo o que eu queria mesmo! Não precisar declarar um Identificador!


Deixar de definir rótulos para suas estruturas é algo que você raramente deveria fazer. Já lhe mostrei isso no dia 14 de dezembro de 2021 neste outro tópico: https://www.vivaolinux.com.br/topico/C-C++/Dificuldade-pra-entender-declaracao-de-struct, mas você não respondeu ali se tinha ficado com alguma dúvida.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


5. Re: Dúvida básica de sizeof em Struct [RESOLVIDO]

Apprentice X
ApprenticeX

(usa Slackware)

Enviado em 31/01/2022 - 17:30h

paulo1205 escreveu: Deixar de definir rótulos para suas estruturas é algo que você raramente deveria fazer. Já lhe mostrei isso no dia 14 de dezembro de 2021 neste outro tópico: https://www.vivaolinux.com.br/topico/C-C++/Dificuldade-pra-entender-declaracao-de-struct, mas você não respondeu ali se tinha ficado com alguma dúvida.

Sim, eu entendi sua explicação e guardei, visto que é a mais completa explicando o uso do identificador de uma struct, inclusive o mais importante que achei ali, foi o de saber que mesmo eu não definindo o sistema vai definir o identificador por conta própria!

Eu realmente ainda não estou usando um identificador, pra manter meus códigos o mais simples possível com menos informação pra que eu possa aos poucos assimiliar, porque conforme um programa aumenta de tamanho, vai ficando mais complexo pra compreender! Eu ainda estou me familiarizando com essa complexidade.

Conforme eu vou escrevendo um programa, aos poucos vou entendendo como cada função, objeto e etc... funcionam e se comportam. Eu quis entender o que é um identificador justamente por causa disso, pra saber o porque ele é usado, no objetivo de dominar o seu conceito, e assim poder incluir ou dispensar conforme seja em cada caso. No meu caso com struct, ainda estou mechendo com uma struct bem básica do tipo:
struct {
char nome[10], Tel[10];
} Database[10];
Venho mantendo ela simples porque ainda estou me familiarizando em como carregar os dados nela, como modificá-los e etc.. mas somente neste modelo de básico, do tipo FIXA, ou seja, sem adicionais de criar novas no código entre outras coisas. Não é um programa pronto, e sim pequenos exemplos de como funciona cada coisa que eu venho criando e anotando.

Essas Verdadeiras Aulas que vc ensina aqui no VOL, contribuem em muito no processo desse aprendizado!