int i = 5; int *p = &i; |
p
e qual é o seu valor inicial?p++;
" e o resultado de
executar "*p++ = 0;
"?
char c, *cptr; c = 'a'; cptr = &c; printf("tamanho de um char: %lu\n", sizeof(c)); printf("tamanho do endereço de um char: %lu\n", sizeof(&c)); printf("tamanho de um apontador para um char: %lu\n", sizeof(cptr)); printf("tamanho do conteúdo apontado por um apontador para um char: %lu\n", sizeof(*cptr)); printf("Os valores apontados pelos endereços '%p' e '%p' são '%c' e '%c'\n", &c, cptr, c, *cptr); |
int x[3] = {23, 41, 17}; |
Qual é o valor das expressões que se seguem:
x[0]
x[1]
x[2]
x
*x
x+1
*(x+1)
x+2
*(x+2)
&(x[0])
*&(x[0])
&*(x[0])
printf("%s", v);
".
#include <stdio.h> #define SIZE 10 void show_vector(char *a, int n); int main() { char v[SIZE] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'}; show_vector(v, SIZE); return 0; } void show_vector(char *a, int n) { int i; for (i = 0; i < n; i++) { // imprima aqui os valores e os endereços de cada elemento do vector } } |
mp
,
alloc_matrix
e fun
.
#include <stdio.h> #include <stdlib.h> int add(int a, int b) { return a + b; } int *alloc_matrix(int m, int n) { return (int *) malloc(m * n * sizeof(int)); } int main() { int *mp; int (*fun)(int, int); mp = alloc_matrix(3, 5); // Notação tradicional fun = &add; printf("2 + 3 = %d\n", (*fun)(2, 3)); // Notação abreviada fun = add; printf("4 + 5 = %d\n", fun(4, 5)); return 0; } |
mat2file
que pede ao utilizador
que introduza os elementos (inteiros) de uma matriz, e que os
armazena num ficheiro (utilizando como separador o caracter
espaço). As dimensões da matriz e o nome do ficheiro são passados
através da linha de comando (e.g., "mat2file 2 3
matriz.txt
"), sendo os elementos pedidos, um a um, ao
utilizador. No ficheiro, os dois primeiros elementos são o número
de linhas e de colunas, sendo os restantes os elementos da matriz.
Por exemplo, a matriz:
10 20 30
40 50 60
deve ser armazenada como:
2 3 10 20 30 40 50 60
Funções a ter em conta: atoi(), scanf(), fopen(), fprintf() e fclose().
file2mat
que lê um ficheiro
criado pelo mat2file
, cujo nome deve ser passado na
linha de comando (e.g., "file2mat matriz.txt
") e
imprime o seu conteúdo no ecrã, com os elementos da mesma linha e
de diferentes colunas separados por tabs (\t).
Funções a ter em conta: fopen(), fscanf() e fclose().