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;
}

Tags : , ,

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;
}

Tags : ,

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

Tags : ,

Programação em C ajudas

Site com ajudas sobre programação em C.

+infos: https://programacaodescomplicada.wordpress.com/indice/linguagem-c/

Tags : ,