Bonjour, je suis tombé sur une erreur que je ne connaissait pas en compilant un programme en C .
Alors j'ai fais quelques tests et il y a quelque chose que je n'arrive pas a comprendre.
Voici le programme de test:
#include<stdio.h>
void plus1(int *p) {
*p=*p+1; }
int main(void) { int a=3; int t[2]={10,11}; int t2[2][2]={{10,11},{12,13}}; int *p;
tab2p.c: Dans la fonction «main» :
tab2p.c:24: attention : passing argument 1 of «plus1» from incompatible pointer type
Ma question c'est POURQUOI ??
la fonction demande un pointeur d'entier et c'est ce que je lui donne, enfin c'est ce que je pense.
A moins que le fais de declarer un tableau static a 2 entrée ne crée pas un pointeur?!
si quelqu'un peut m'expliqué je suis preneur.
Pour info:
je suis sous linux Ubuntu.
compilateur: gcc (GCC) 4.0.3 (Ubuntu 4.0.3-1ubuntu5)
heu non c'est une erreur de ma part la fonction plus1 renvoi void (corriger)
et non ca ne change rien de toute façon, c'est l'argument qui ne lui plai pas.
[EDIT]
j'ai fais de nouveau tests:
t2=-1079558888
*t2=-1079558888
apparament t2 est bien un pointeur sinon le compilateur n'accepterait pas que je place * devant t2.
Mais ca me parrait etrange, trés étrange même que t2==*t2.
on a donc un pointeur a l'adresse 0xbfbeb1a8
qui contien 0xbfbeb1a8
c'est donc un pointeur qui pointe sur lui même.
si on lui demande la valeur vers laquelle il pointe il nous repond : 0xbfbeb1a8
normale c'est lui même.
mais si on lui demande la valeur pointé par ce qu'il pointe lui même, lui en toute logique,
il nous repond 10
MAIS COMMENT QUIL FAIT!!!
[C] pointeur et tableau static
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.