ponteiros em c

caprr

Power Member
viva


estava aqui a fazer um programazito quando me deparo com uma situação nova para mim:


...
/* inicio do corpo principal*/
...
verifica(..., &cons, ...);

/*fim do programa*/


/*declaraçao de funcoes*/

int verifica( ..., *cons,....)
{
for (...)
{
if(...)
{
*cons++; /*variavel q vai incrementar uma unidade se o q esta dentro do ciclo if se verificar*/
}
.....
}
..........
}




A MINHA DUVIDA é porque é que eu nao posso utilizar o operador ++ no cons( que é um ponteiro para um inteiro),

eu resolvi a situação utilizando o seguinte codigo--> *cons=*cons+1;
 
viva

vao-me desculpar mas nao me expliquei bem, e ainda mais para ajudar eu nao posso por aqui o programa, pois tenho-o numa outra maquina na qual nao tenho o mount da disquete operacional( logo nao grava), o cdr esta pifado :004: :004: ....

em relação ao problema acima:
se na declaração da funçao verifica antes de usar o *cons++ eu lhe atribuir o valor zero( *cons=0), ele continua na mesma com problemas...
caso eu nao faça esta atribuição, esta variavel tera um endereço ( algo do genero( 0Fx....) mas se eu atribuir-lhe o valor de zero o porque é que nao adiciona uma unidade ao valor que lhe está atribuido( cons++)???

por exemplo numa string ( pexplo: S[MAX])
se
declarar um ponteiro para char
char *p;
p=S;
p++;/*equivale a for(i=o;...;i++) S=....*/

esta atribuição ja é valida, pois ele avança para o proximo elemento da string
 
o operador ++ tem a mesma precedência que o operador * mas a associatividade dos mesmos é feita da direita para a esquerda por isso ele vai fazer
const++ e só depois é que acede à zona de memória...tenta fazer (*const)++;
 
Back
Topo