Linguagem C

Funções

Funções são blocos de código do programa. A palavra de ordem quando usamos funções é o reaproveitamento.

Sintaxe:

<tipo> nomeFuncao (<tipo> parametro ...) {
  // bloco de codigo
}

Exemplo:

int double (int num) {
  return num * 2;
}

Observaçoes:

  • Funções com void não necessitam de return no final ou em alguma parte do código.
  • O número de parâmetros, também será o número de tipos dos parâmetros. Os mesmos deverão ser separados com vírgulas.
  • O tipo da função especifíca o seu retorno. Portanto, tome muito cuidado em como irá retornar os dados.

Strings

Strings são cadeias de caracteres. São como vetores, de char, mas que podem ser lidos e escritos com mais de um caracter.

  • Declaração de string
char nome[30];

/* Inicializando strings */

char nome[30] = {"Emanuel Goncalves de Souza"};

Em printf e scanf você usa o %s para ler e escrever uma string inteira.

Funções importantes com strings

  • gets(): lê o que o usuário digitar, inclusive com espaços.
  • strcmp(): compara se duas variáveis são iguais. Se sim, retorna 0, se não, retorna 1.
  • strcpy(): copia o conteúdo de uma string para outra string.
  • strcat(): concatena o conteúdo de duas strings.
char nome[10];
char sobrenome[30];
char aux nome[10];
char aux2 sobrenome[30];

// Captura o que é digitado pelo usuário
gets(nome);
gets(sobrenome);

// Concatena
strcat(nome, "");
strcat(nome, sobrenome);

// Copia
strcpy(aux, nome); // aux recebe o conteudo de nome
strcpy(aux2, sobrenome);

// Compara
strcmp(aux, nome); // retorna 0
strcmp(aux, sobrenome); // retorna 1

Ponteiros

Ponteiros na linguagem C são variáveis que guardam o endereço de memória de outras variáveis. Seu uso é importante quando se quer modificar o escopo de uma função, que por padrão, possui escopo global. Ai quando se torna necessário modificar variáveis fora deste escopo, ponteiros mostra seu valor.

  • Declaração de ponteiros:
// <tipo> *ponteiro;

int *ponteiro;

// Atribuindo um endereço de uma variável
ponteiro = &variavel;

// Acessando este valor
*ponteiro = 1; // variavel irá ter agora o valor 1

Observações:

  • Quando eu quero passar o endereço de uma variável, eu uso o &;
  • Quando eu quero acessar o valor e manipulá-lo, sobrescrevê-lo e afins, uso o *;
  • Vetores já são ponteiros por natureza.

Usando ponteiros em funções

void somaDois (int *ponteiro, int vet[]) {
  // Aqui estou dizendo a minha função: 'Você irá receber um ponteiro'
  * ponteiro += 2;

  // Trabalho com meu vetor aqui dentro
  vet[0] = 2;
  vet[1] = 4;
}

// Meu main
int main () {
  int a = 2;
  int vet[2];

  somaDois(&a, vet); // Repare que para eu passar o endereço da variavel a, eu uso o & e não preciso fazer isso com o vetor
  printf("O valor de a eh: %i", a); // O resultado será 2
  for (int x = 0; x < 2; x++) {
    printf("vet[%i] - %i\n", x, vet[x]);
  }
}

Structs ou Registros

structs são estruturas de dados em C que guardam dados heterogêneos. O que isso significa. Em C, vetores e matrizes só podem guardar dados de apenas um tipo. Se é int, é int e acabou. Só que com struct, é possível guardar mais de um tipo de dado em uma variável.

Exemplo, imagine que eu precise guardar informações de uma pessoa em uma variável, isto, com struct, seria assim:

// Primeiro defino meu esquema do struct
// Lembrando, fora de main ()
struct Pessoa {
  char nome[10];
  int idade;
  float altura;
  char sexo;
}

void main () {
  // Usando meu struct
  struct emanuel;

  // Acessando e modificando meu struct Emanuel
  emanuel.nome = "Emanuel";
  emanuel.idade = 19;
  emanuel.altura = 1.69;
  emanuel.sexo = "M";

  // Eu posso usar as variáveis dentro do meu struct, como variáveis normais, dentro de scanf, printf e afins
  // Informações vistas até aqui ainda valem para struct, como vetores, matrizes, ponteiros e afins
}

results matching ""

    No results matching ""