Tag: programação C
Contar numeros negativos e positivos num array usando ponteiros
#include <stdio.h> #include <stdlib.h> #define TAM 10 int contarN(int *r, int s, int *pP, int *pN) { int i; for(i=0; i < s; i++) { if(*(r+i)>=0) { *pP=(*pP)+1; }else { *pN=*pN+1; } } printf("%d - %d \n", *pP, *pN); return 0; } int main() { int tab1[TAM]= {0,12,2,333,-4,54,6,77,88,-99}; int *a=tab1, numP=0, numN=0; contarN(a, TAM, &numP, &numN); return 0; }
ainda ponteiros em C
int main() { int a=0, b = 4; int *p; p = &a; printf("%d\n", *p); *p = b * 10; //estou a modificar o valor da variavel a printf("%d\n", *p); p = &b; //estou a modificar para onde aponta p printf("%d\n", *p); printf("%d %d\n", *p, *p+a); return 0; }
Ponteiros (apontadores) em C
Coisas a saber sobre os ponteiros em C
declaração:
tipo *nome_ponteiro;
operadores básicos:
& -> para obter o endereço de uma variável
* -> aceder à variável para onde um ponteiro aponta
propriedades:
p1 -> o nome de um array é um ponteiro para o primeiro elemento. a[0] ou *a
p2 -> (aritmética de ponteiros) se existir um ponteiro a referenciar um elemento de um array, é possivel aceder aos restantes. (p+i)
equivalências:
int a[10]={0,1,2,3,4,5,6,7,8,9};
int *p=a;
vem que
a é o mesmo que &a[0]
a[i] é o mesmo que *(a+i)
resumo de operações sobre pointers:
atribuição ptr = &x;
incremento ptr=ptr+2 (2*sizeof(tipo))
decremento ptr=ptr-10 (10*sizeof(tipo))
apontado por *ptr
endereço de &ptr
diferença ptr1-ptr2
comparação ptr1>ptr2
Programação em C ajudas
Site com ajudas sobre programação em C.
+infos: https://programacaodescomplicada.wordpress.com/indice/linguagem-c/