Escolar Documentos
Profissional Documentos
Cultura Documentos
/* apont1.c */
void main()
{
int x=5,y=6;
int *px,*py;
clrscr();
px=&x;
py=&y;
if(px<py)
printf("py-px=%d\n",py-px);
else
printf("px-py=%d\n",px-py);
printf("px=%ld,*px=%d,&px=%ld\n",(long)px,*px,(long)&px);
printf("py=%ld,*py=%d,&py=%ld\n",(long)py,*py,(long)&py);
px++;
printf("px=%ld,*px=%d,&px=%ld\n",(long)px,*px,(long)&px);
py=px+3;
printf("py=%ld,*py=%d,&py=%ld\n",(long)py,*py,(long)&py);
printf("py-px=%d\n",py-px);
getch();
}
/*
Uma sada possvel:
px-py=1
px=4831835944,*px=5,&px=4831835928
py=4831835936,*py=6,&py=4831835920
px=4831835952,*px=0,&px=4831835928
py=4831835976,*py=536868944,&py=4831835920
py-px=3
*/
Programao II
p=&i
*q=&j
p=&*&i
i=*&j
i=*&*&j
q=&p
i = *(&j);
i=(*p)+++*q
#include <stdio.h>
main()
{
int i, j;
double k;
int *q, *p; /* reserva espaos de memria contguos */
i=10;
j = 20;
clrscr();
printf("&i= %ld, &j =%ld, &k =%ld, &q =%ld, &p = %ld \n",
(long)&i, (long)&j, (long)&k, (long) &q, (long)&p);
p=&i;
printf("%ld \n",(long)p);
*q=&j;
printf("%d \n",*q);
p=&*&i;
Ana Almeida Figueiredo
Programao II
printf("%ld \n",(long)p);
i=*(&j);
printf("%d \n",i);
i=*&*&j;
printf("%d \n",i);
q=&p;
printf("%ld \n",(long)q);
i=*(&j);
printf("%d \n",i);
i=(*p)+++*q;
printf("%d \n",i);
getch();
}
Programao II
/* Result of execution
The starting values are 100 101
The values are 100 101
The values are 135 172
The ending values are 100 172
main
altera
x
100
y
101
a
135
ap
A funo alterada
#include "stdio.h"
void altera(int *a, int *ap);
void main()
{
int x, y;
/*
aptut311.c
*/
x = 100;
y = 101;
clrscr();
printf("Os valores iniciaos so %d %d\n", x, y);
altera(&x, &y);
printf("Os valores finais so %d %d\n", x, y);
getch();
}
void altera(int* a, int *ap)
printf("Os valores so %d %d\n",* a, *ap);
*a = 135;
*ap = 172;
printf("Os valores so %d %d\n" ,*a, *ap);
}
5. Implemente uma funo que permita trocar os valores de duas variveis, dadas via
teclado. Faa o programa que a permita testar.
#include "stdio.h"
void troca(int *a, int *b);
void main()
{
Ana Almeida Figueiredo
Programao II
int x, y;
clrscr();
printf("introduza os valores de X e Y\n", x, y);
scanf("%d %d", &x, &y);
printf("Os valores introduzidos para X e Y so %d %d\n", x, y);
troca(&x, &y);
printf("Os valores de X e Y so %d %d\n", x, y);
getch();
}
void troca(int *a, int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
printf("Os valores de *a e *b so %d %d\n" ,*a, *b);
}
Programao II
7. Faa um programa que que recebe como parmetros do DOS, N variveis do tipo
string, sendo a primeira o nome do programa (as seguintes podem ser por ex: o nome
do utilizador) e em seguida as imprime no ecran, assim como o tamanho de cada uma
delas.
#include <stdio.h>
#include <stdio.h>
main(int argc, char argv[])
{
int i;
clrscr();
/* argmain.c
*/
if (argc == 1)
{
printf("esqueceu-se de digitar o nome\n");
exit(0);
}
else
{
printf("Ol ");
for (i=1; i<argc; i++)
printf(" %s", argv[i]);
printf(" \n existem %d parametros na linha de comando\n", i);
for (i=1; i<argc; i++)
printf(" a string %s tem o tamanho %d \n", argv[i],
strlen(argv[i]));
}
getch();
}
Programao II
Programao II
scanf("%i",&num) ;
while(num)
{
i++ ;
v=realloc(v,i*sizeof(int)) ;
if (!v)
exit(1) ;
*(v+i-1) = num ;
tot=tot+num ;
scanf("%i",&num) ;
}
med=tot/i;
printf("Mdia dos Ns introduzidos %f\n",med) ;
for (p=v; p<(v+i); p++)
if (*p > med)
printf("Ns Sup. mdia %i\n",*p) ;
getch() ;
free(v) ;
}
/* Sempre que necessario espao p/ mais um elemento, o vector
redimensionado c/ a funo realloc p/ esse elemtno l caber. No final
calcula-se a mdia, e utiliza-se um apontador auxiliar, que vai conter o
endereo de todos os elemntos desde o 1 at ao ltimo. Comparando o
contedo da posio de memria que o apontador auxiliar contm, c/ a
mdia, verifica-se se esse elemento ou no superior e assim sendo se
deve ou no ser impresso. */