Exercicios Da Etapa 3 De Programacao
Dois problemas para tratar ponteiros.
1.Quais serão os valores de x, y e p ao final do trecho de código abaixo? int x, y, *p; y = 0; p = &y; //*p = 0 x = *p; //x = 0 x = 4; //x = 4 (*p)++; //*p = 1, y = 1 --x; //x = 3 (*p) += x; //*p = 4, y = 4 Ao final, temos: x = 3, y = 4, p apontando para y (*p = 4).
2. Os Programas (Trecho de código) abaixo possuem erros. Qual e como deveria ser? Void main() { Int x, *p; X = 100; P = x; //p deveria receber o endereço de x, já que p é um ponteiro (e x não). Ponteiros “armazenam” oendereço para o qual eles apontam! O código correto seria: p = &x; Printf (“Valor de p: %d.\n”, *p); }
Dois problemas para tratar ponteiros para matriz
1.Crie um Programa qualquer tratando ponteiro para matriz. #include <stdio.h> int main (void) { char palavra[80]=” Ola! ”; char *palavra2; palavra2=palavra; printf(“O texto %s esta armazenado no endereco %p\n”,palavra,palavra); while (*palavra2) { printf(“O caracter %c da palavra %s esta no endereco %p\n”,*palavra2,palavra,palavra2); palavra2++; } return(0); }
2.Crie outro programa qualquer que trate ponteiro para matriz. #include <stdio.h>
void Funcao_A(int *p, int size) { *p = 7; *(p + (size * 1)) = 7; *((p + (size * 1)) + 1) = 7; }
int main() { int m[10][10]; Funcao_A((int *)m, 10); printf("%d, %d, %d", m[0][0], m[1][0], m[1][1]); getchar(); return 0; }
Dois problemas para tratar ponteiros para matriz usando funções.
1.Crie um programa que trate ponteiros para matriz usando funções.
#include <stdio.h> #include <stdlib.h> #include <string.h>
#define NUM_LINHAS 2
#define NUM_COLUNAS 2
void matriz(int* a, int b, int c){
int i, k;
for(i=0; i < b; i++){ for(k=0; k < c; k++){ printf("[%d]", a[i*c+k]); } printf("\n"); }
}
void lerMatriz(int* a, int b, int c){
int i, k;
for(i=0; i<b; i++){ for(k=0; k < c; k++){ scanf("%d", &a[i*c+k]); } }