Programar em C/Mais sobre variáveis: diferenças entre revisões
[edição verificada] | [edição verificada] |
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição |
Sem resumo de edição |
||
Linha 1:
{{revisão}}
Linha 10 ⟶ 8:
'''uint''' numero;
''// equivalente a "unsigned int numero;"
Como exemplo vamos dar o nome de inteiro para o tipo int:
typedef int inteiro;
Como se vê, ''typedef'' cria uma espécie de "apelido" para um tipo de dados, permitindo que esse tipo seja referenciado através desse apelido em vez de seu identificador normal.
Um dos usos mais comuns de ''typedef'' é abreviar a declaração de tipos complexos, como ''structs'' ou estruturas. Veja este exemplo:
'''struct''' ''pessoa'' {
char nome[40];
Linha 29 ⟶ 30:
'''Pessoa''' joao;
Um "apelido" de tipo é utilizado com bastante
typedef '''struct''' ''_iobuf''
{
Linha 49 ⟶ 50:
== sizeof ==
O operador sizeof é usado para se saber o tamanho de variáveis ou de tipos. Ele retorna o tamanho do tipo ou variável em bytes como uma contante. Devemos usá-lo para garantir portabilidade. Por exemplo, o tamanho de um inteiro pode depender do sistema para o qual se está compilando. O sizeof é um operador porque ele é substituído pelo tamanho do tipo ou variável no momento da compilação. Ele não é uma função. O sizeof admite duas formas:
sizeof nome_da_variável
sizeof (nome_do_tipo)
Se quisermos então saber o tamanho de um float fazemos sizeof(float). Se declararmos a variável f como float e quisermos saber o seu tamanho faremos sizeof f. O operador sizeof também funciona com estruturas, uniões e enumerações.
Outra aplicação importante do operador sizeof é para se saber o tamanho de tipos definidos pelo usuário. Seria, por exemplo, uma tarefa um tanto complicada a de alocar a memória para um ponteiro para a estrutura ficha_pessoal, criada na primeira página desta aula, se não fosse o uso de sizeof. Veja o exemplo:
<source lang="C">
typedef struct {▼
const char *nome;▼
const char *sobrenome;▼
int idade;▼
} Pessoa;▼
int main(void)▼
{▼
Pessoa *joaquim;▼
joaquim = malloc(sizeof(Pessoa));▼
joaquim->nome = "Joaquim";▼
joaquim->sobrenome = "Silva";▼
joaquim->idade = 15;▼
}▼
</source>
Outro exemplo:
<source lang="C">
#include <string.h>
#include <stdio.h>
Linha 65 ⟶ 84:
{
char *nome;
nome = malloc(sizeof(char) *
sprintf(nome, "wikibooks");
printf("Site: http://pt.%s.org/", nome);
Linha 73 ⟶ 92:
*/
}
</source>
<source lang="C">
const char *FRASE;
FRASE = "Wikibooks eh legal";
printf("Eu acho que o tamanho da string FRASE é %d", sizeof(FRASE));
</source>
▲''' A sentença acima NÃO funciona''', pois sizeof é substituido pelo tamanho de um '''''tipo''''' em tempo de compilação.
▲typedef struct {
▲ const char *nome;
▲ const char *sobrenome;
▲ int idade;
▲} Pessoa;
▲main(void)
▲{
▲ Pessoa *joaquim;
▲ joaquim = malloc(sizeof(Pessoa));
▲ joaquim->nome = "Joaquim";
▲ joaquim->sobrenome = "Silva";
▲ joaquim->idade = 15;
▲}
== Conversão de tipos ==
Linha 164 ⟶ 156:
== Atributos das variáveis ==
Estes modificadores, como o próprio nome indica, mudam a maneira com a qual a variável é acessada e modificada. Alguns dos exemplos usam conceitos que só serão abordados nas seções seguintes, então você pode deixar esta seção para depois se assim o desejar.
=== const ===
Linha 224 ⟶ 216:
Neste exemplo, o compilador irá saber que <var>count</var> e <var>sum</var> estão sendo usados no arquivo mas que foram declarados em outro.
Uma variável externa
=== static ===
|