• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

suzy

size of porque??

3 mensagens neste tópico

tenho aqui uma duvida em c++

tenho a definiçao de uma classe tabela que é esta:

#pragma once
using namespace std;

const int DIM = 10;

class Tabela{
int a[DIM];
int n;

public:
Tabela (int b[], int num);// contrutor que inicializa os objectos
void lista ();
void setA (int indice, int valor);// vai preencher
int getA (int indice);//vai buscar dados que ja estao na classe
};

agora noutro ficheito tenho a funcao main

using namespace std;

const int DIM = 10;

struct Tabela{
int a[DIM];
int n;
};

void inicializa(Tabela &x, int b[], int num);
void lista(Tabela x);
void setA(Tabela &x, int indice, int valor);
int getA(Tabela x, int indice);

void main()
{
Tabela x;

int b[]={10,20,30,40,50};
int num = sizeof(b)/sizeof(b[0]);-------->>> porque este raciocinio nao percebo:(

       inicializa(x, b, num);
lista(x);
setA(x, 0, 999);
cout << "\nx.a[0] = " << getA(x, 0) << endl;
}

void inicializa(Tabela &x, int b[], int num){
if (num > DIM)
	num = DIM;
if (num < 0)
       	num = 0;

x.n = num;

for (int i = 0; i < num; i++)
	x.a[i] = b[i];
}

void lista(Tabela x){
       for (int i = 0; i < x.n; i++)
	cout << "\nx.a[" << i << "] = " << x.a[i];
}

void setA(Tabela &x, int indice, int valor){
if (indice > x.n || indice < 0)
	return;

x.a[indice] = valor;		
}



int getA(Tabela x, int indice){
if (indice > x.n || indice < 0)
	return 0;

return x.a[indice];
}

a minha duvida e porque o size of nao tou a entender:(

int num = sizeof(b)/sizeof(b[0]); -------->>> porque este raciocinio nao percebo:(

porque isto?

obrigada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assim à primeira vista, é para saber o número de elementos do array.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Atribui à variável num a razão entre o número de bytes do array b e o número de bytes do primeiro elemento desse array.

Ora, como em C++ os elementos de um array são todos do mesmo tipo, isso devolve o número de elementos do array, tal como o rui carlos disse.

E aqui vai o verdadeiro linkzinho para a nossa amiga documentação:

http://www.cppreference.com/keywords/sizeof.html

lê a página do link com atenção para ficares a perceber isto bem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora