operacoes com ponteiros.As proximas operacoes, tambem muito usadas, sao o incremento e o decremento.Quando incrementamos um ponteiro ele passa a apontar para o proximo valor do mesmo tipopara o qual o ponteiro aponta. Isto e, se temos um ponteiro para um inteiro e oincrementamos ele passa a apontar para o proximo inteiro. Esta e mais uma razao pela qual ocompilador precisa saber o tipo de um ponteiro: se voce incrementa um ponteiro char* eleanda 1 byte na memoria e se voce incrementa um ponteiro double* ele anda 8 bytes namemoria. O decremento funciona semelhantemente. Supondo que p e um ponteiro, asoperacoes sao escritas como:p++;p--;Mais uma vez insisto. Estamos falando de operacoes com ponteiros e nao de operacoescom o conteudo das variaveis para as quais eles apontam. Por exemplo, para incrementar oconteudo da variavel apontada pelo ponteiro p, faz-se:(*p)++;Outras operacoes aritmeticas uteis sao a soma e subtracao de inteiros com ponteiros.Vamos supor que voce queira incrementar um ponteiro de 15. Basta fazer:p=p+15; ou p+=15;45E se voce quiser usar o conteudo do ponteiro 15 posicoes adiante:*(p+15);A subtracao funciona da mesma maneira. Uma outra operacao, as vezes util, e acomparacao entre dois ponteiros. Mas que informacao recebemos quando comparamos doisponteiros? Bem, em primeiro lugar, podemos saber se dois ponteiros sao iguais ou diferentes(== e !=). No caso de operacoes do tipo >, <, >= e <= estamos comparando qual ponteiroaponta para uma posicao mais alta na memoria. Entao uma comparacao entre ponteiros podenos dizer qual dos dois esta "mais adiante" na memoria. A comparacao entre dois ponteiros seescreve como a comparacao entre outras duas variaveis quaisquer:p1>p2Ha entretanto operacoes que voce nao pode efetuar num ponteiro. Voce nao pode dividirou multiplicar ponteiros, adicionar dois ponteiros, adicionar ou subtrair floats ou doubles deponteiros.AUTO AVALIACAOVeja como voce esta.a) Explique a diferenca entrep++; (*p)++; *(p++);O que quer dizer *(p+10);?Explique o que voce entendeu da comparacao entre ponteirosb) Qual o valor de y no final do programa? Tente primeiro descobrir e depois verifique nocomputador o resultado. A seguir, escreva um /* comentario */ em cada comando deatribuicao explicando o que ele faz e o valor da variavel a esquerda do = apos sua execucao.int main(){int y, *p, x;y = 0;p = &y;x = *p;x = 4;(*p)++;x--;46(*p) += x;printf ("y = %d\n", y);return(0);}Ponteiros e VetoresVeremos nestas secoes que ponteiros e vetores tem uma ligacao muito forte.Vetores como ponteirosVamos dar agora uma ideia de como o C trata vetores.Quando voce declara uma matriz da seguinte forma:tipo_da_variavel nome_da_variavel [tam1][tam2] ... [tamN];o compilador C calcula o tamanho, em bytes, necessario para armazenar esta matriz.Este tamanho e:tam1 x tam2 x tam3 x ... x tamN x tamanho_do_tipoO compilador entao aloca este numero de bytes em um espaco livre de memoria. Onome da variavel que voce declarou e na verdade um ponteiro para o tipo da variavel damatriz. Este conceito e fundamental. Eis porque: Tendo alocado na memoria o espaco para amatriz, ele toma o nome da variavel (que e um ponteiro) e aponta para o primeiro elemento damatriz.Mas ai surge a pergunta: entao como e que podemos usar a seguinte notacao?nome_da_variavel[indice]Isto pode ser facilmente explicado