"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
On entend souvent des formulations plus ou moins diverses et compliquées
sur cette conversion tableau-pointeur, ce qui fait qu'on a du mal à s'y
retrouver.
On parle par exemple du nom du tableau
(alors que si p pointe vers un
tableau,
il me semble que *p est également concerné par cette
conversion),
ou d'exception sur certains opérateur (& et sizeof, ce qui
n'est pas faux, mais dont la cause semble être le fait que derrière ces
opérateurs, une lvalue n'est pas convertie en rvalue).
Ma question est simple : cette phrase est-elle vraie ?
"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
On entend souvent des formulations plus ou moins diverses et compliquées
sur cette conversion tableau-pointeur, ce qui fait qu'on a du mal à s'y
retrouver.
On parle par exemple du nom du tableau
(alors que si p pointe vers un
tableau,
il me semble que *p est également concerné par cette
conversion),
ou d'exception sur certains opérateur (& et sizeof, ce qui
n'est pas faux, mais dont la cause semble être le fait que derrière ces
opérateurs, une lvalue n'est pas convertie en rvalue).
Ma question est simple : cette phrase est-elle vraie ?
"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
On entend souvent des formulations plus ou moins diverses et compliquées
sur cette conversion tableau-pointeur, ce qui fait qu'on a du mal à s'y
retrouver.
On parle par exemple du nom du tableau
(alors que si p pointe vers un
tableau,
il me semble que *p est également concerné par cette
conversion),
ou d'exception sur certains opérateur (& et sizeof, ce qui
n'est pas faux, mais dont la cause semble être le fait que derrière ces
opérateurs, une lvalue n'est pas convertie en rvalue).
Ma question est simple : cette phrase est-elle vraie ?
"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
On entend souvent des formulations plus ou moins diverses et compliquées
sur cette conversion tableau-pointeur, ce qui fait qu'on a du mal à s'y
retrouver.
On parle par exemple du nom du tableau (alors que si p pointe vers un
tableau, il me semble que *p est également concerné par cette
conversion),
ou d'exception sur certains opérateur (& et sizeof,
ce qui
n'est pas faux, mais dont la cause semble être le fait que derrière ces
opérateurs, une lvalue n'est pas convertie en rvalue).
Ma question est simple : cette phrase est-elle vraie ?
"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
On entend souvent des formulations plus ou moins diverses et compliquées
sur cette conversion tableau-pointeur, ce qui fait qu'on a du mal à s'y
retrouver.
On parle par exemple du nom du tableau (alors que si p pointe vers un
tableau, il me semble que *p est également concerné par cette
conversion),
ou d'exception sur certains opérateur (& et sizeof,
ce qui
n'est pas faux, mais dont la cause semble être le fait que derrière ces
opérateurs, une lvalue n'est pas convertie en rvalue).
Ma question est simple : cette phrase est-elle vraie ?
"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
On entend souvent des formulations plus ou moins diverses et compliquées
sur cette conversion tableau-pointeur, ce qui fait qu'on a du mal à s'y
retrouver.
On parle par exemple du nom du tableau (alors que si p pointe vers un
tableau, il me semble que *p est également concerné par cette
conversion),
ou d'exception sur certains opérateur (& et sizeof,
ce qui
n'est pas faux, mais dont la cause semble être le fait que derrière ces
opérateurs, une lvalue n'est pas convertie en rvalue).
Ma question est simple : cette phrase est-elle vraie ?
Yoxoman wrote:"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
Bon, reprenons...
Un tableau V de N éléments de type T est, techniquement, un block de
mémoire contigu d'une taille suffisante pour stocker N élément de type T
(problèmes d'alignement etc compris...). Le fait de connaitre T permet
de connaitre la taille de T, donc de pouvoir, à partir de l'adresse de
V[0], calculer l'adresse de V[x].
Accessoirement, l'adresse de V[0] étant celle du premier élément du
tableau, elle est aussi celle du block mémoire lui-même puisque c'est à
cette adresse qu'il commence (M. de la Palisse vous salue bien). Et la
*valeur* de V (pas son *adresse*) est bien *l'adresse* de V[0] - sans
quoi on ne pourrrait pas accéder à ce block mémoire.
On est en fait dans la même situation qu'avec un pointeur sur block de
mémoire de taille T*N dynamiquement alloué - à un détail près: le type
tableau connait sa 'taille' (ie le nombre d'éléments) alors que le type
pointeur ne connait pas la taille du bloc mémoire sur lequel il pointe.
Et on peut effectivement, *dans les deux cas*, utiliser de façon
interchangeable la syntaxe tableau et la syntaxe pointeur - puisqu'en
fait la syntaxe tableau n'est guère plus que du sucre syntaxique.
On parle par exemple du nom du tableau
Qui n'est rien d'autre qu'un symbole...
(alors que si p pointe vers un
tableau,
définition de p ???
il me semble que *p est également concerné par cette
conversion),
Quelle conversion ?-)
La seule conversion (implicite, j'entend) est celle qui a lieu quand tu
passe un tableau en paramètre à une fonction. Ce que la fonction reçoit
effectivement est un pointeur, et non le tableau lui-même - d'où le fait
que sizeof retourne la taille du pointeur et non le nombre d'éléments du
tableau.
ou d'exception sur certains opérateur (& et sizeof, ce qui
n'est pas faux, mais dont la cause semble être le fait que derrière ces
opérateurs, une lvalue n'est pas convertie en rvalue).
Ma question est simple : cette phrase est-elle vraie ?
Laquelle ?-)
Yoxoman wrote:
"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
Bon, reprenons...
Un tableau V de N éléments de type T est, techniquement, un block de
mémoire contigu d'une taille suffisante pour stocker N élément de type T
(problèmes d'alignement etc compris...). Le fait de connaitre T permet
de connaitre la taille de T, donc de pouvoir, à partir de l'adresse de
V[0], calculer l'adresse de V[x].
Accessoirement, l'adresse de V[0] étant celle du premier élément du
tableau, elle est aussi celle du block mémoire lui-même puisque c'est à
cette adresse qu'il commence (M. de la Palisse vous salue bien). Et la
*valeur* de V (pas son *adresse*) est bien *l'adresse* de V[0] - sans
quoi on ne pourrrait pas accéder à ce block mémoire.
On est en fait dans la même situation qu'avec un pointeur sur block de
mémoire de taille T*N dynamiquement alloué - à un détail près: le type
tableau connait sa 'taille' (ie le nombre d'éléments) alors que le type
pointeur ne connait pas la taille du bloc mémoire sur lequel il pointe.
Et on peut effectivement, *dans les deux cas*, utiliser de façon
interchangeable la syntaxe tableau et la syntaxe pointeur - puisqu'en
fait la syntaxe tableau n'est guère plus que du sucre syntaxique.
On parle par exemple du nom du tableau
Qui n'est rien d'autre qu'un symbole...
(alors que si p pointe vers un
tableau,
définition de p ???
il me semble que *p est également concerné par cette
conversion),
Quelle conversion ?-)
La seule conversion (implicite, j'entend) est celle qui a lieu quand tu
passe un tableau en paramètre à une fonction. Ce que la fonction reçoit
effectivement est un pointeur, et non le tableau lui-même - d'où le fait
que sizeof retourne la taille du pointeur et non le nombre d'éléments du
tableau.
ou d'exception sur certains opérateur (& et sizeof, ce qui
n'est pas faux, mais dont la cause semble être le fait que derrière ces
opérateurs, une lvalue n'est pas convertie en rvalue).
Ma question est simple : cette phrase est-elle vraie ?
Laquelle ?-)
Yoxoman wrote:"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
Bon, reprenons...
Un tableau V de N éléments de type T est, techniquement, un block de
mémoire contigu d'une taille suffisante pour stocker N élément de type T
(problèmes d'alignement etc compris...). Le fait de connaitre T permet
de connaitre la taille de T, donc de pouvoir, à partir de l'adresse de
V[0], calculer l'adresse de V[x].
Accessoirement, l'adresse de V[0] étant celle du premier élément du
tableau, elle est aussi celle du block mémoire lui-même puisque c'est à
cette adresse qu'il commence (M. de la Palisse vous salue bien). Et la
*valeur* de V (pas son *adresse*) est bien *l'adresse* de V[0] - sans
quoi on ne pourrrait pas accéder à ce block mémoire.
On est en fait dans la même situation qu'avec un pointeur sur block de
mémoire de taille T*N dynamiquement alloué - à un détail près: le type
tableau connait sa 'taille' (ie le nombre d'éléments) alors que le type
pointeur ne connait pas la taille du bloc mémoire sur lequel il pointe.
Et on peut effectivement, *dans les deux cas*, utiliser de façon
interchangeable la syntaxe tableau et la syntaxe pointeur - puisqu'en
fait la syntaxe tableau n'est guère plus que du sucre syntaxique.
On parle par exemple du nom du tableau
Qui n'est rien d'autre qu'un symbole...
(alors que si p pointe vers un
tableau,
définition de p ???
il me semble que *p est également concerné par cette
conversion),
Quelle conversion ?-)
La seule conversion (implicite, j'entend) est celle qui a lieu quand tu
passe un tableau en paramètre à une fonction. Ce que la fonction reçoit
effectivement est un pointeur, et non le tableau lui-même - d'où le fait
que sizeof retourne la taille du pointeur et non le nombre d'éléments du
tableau.
ou d'exception sur certains opérateur (& et sizeof, ce qui
n'est pas faux, mais dont la cause semble être le fait que derrière ces
opérateurs, une lvalue n'est pas convertie en rvalue).
Ma question est simple : cette phrase est-elle vraie ?
Laquelle ?-)
Le 29-03-2006, Yoxoman a écrit :"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
On parle par exemple du nom du tableau (alors que si p pointe vers un
tableau, il me semble que *p est également concerné par cette
conversion),
Quelle conversion ? Et quel type de p ?
int tab[64];
int* p= tab;
ou bien
typedef int Tab64[64];
Tab64 tab;
Tab64 *p= &tab;
ou d'exception sur certains opérateur (& et sizeof,
et +, []...
ce qui
n'est pas faux, mais dont la cause semble être le fait que derrière ces
opérateurs, une lvalue n'est pas convertie en rvalue).
Là, je suis perdu.
Ma question est simple : cette phrase est-elle vraie ?
Pas dans un contexte de logique booléenne. Après,
si on acepte d'avoir une valeur de véracité continue
entre 0 et 1, je lui mets environ 0,8...
Le 29-03-2006, Yoxoman <yhpnfyrqber@tznvy.pbz> a écrit :
"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
On parle par exemple du nom du tableau (alors que si p pointe vers un
tableau, il me semble que *p est également concerné par cette
conversion),
Quelle conversion ? Et quel type de p ?
int tab[64];
int* p= tab;
ou bien
typedef int Tab64[64];
Tab64 tab;
Tab64 *p= &tab;
ou d'exception sur certains opérateur (& et sizeof,
et +, []...
ce qui
n'est pas faux, mais dont la cause semble être le fait que derrière ces
opérateurs, une lvalue n'est pas convertie en rvalue).
Là, je suis perdu.
Ma question est simple : cette phrase est-elle vraie ?
Pas dans un contexte de logique booléenne. Après,
si on acepte d'avoir une valeur de véracité continue
entre 0 et 1, je lui mets environ 0,8...
Le 29-03-2006, Yoxoman a écrit :"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
On parle par exemple du nom du tableau (alors que si p pointe vers un
tableau, il me semble que *p est également concerné par cette
conversion),
Quelle conversion ? Et quel type de p ?
int tab[64];
int* p= tab;
ou bien
typedef int Tab64[64];
Tab64 tab;
Tab64 *p= &tab;
ou d'exception sur certains opérateur (& et sizeof,
et +, []...
ce qui
n'est pas faux, mais dont la cause semble être le fait que derrière ces
opérateurs, une lvalue n'est pas convertie en rvalue).
Là, je suis perdu.
Ma question est simple : cette phrase est-elle vraie ?
Pas dans un contexte de logique booléenne. Après,
si on acepte d'avoir une valeur de véracité continue
entre 0 et 1, je lui mets environ 0,8...
Le 29-03-2006, Yoxoman a écrit :"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
On parle par exemple du nom du tableau (alors que si p pointe vers un
tableau, il me semble que *p est également concerné par cette
conversion),
Quelle conversion ? Et quel type de p ?
int tab[64];
int* p= tab;
ou bien
typedef int Tab64[64];
Tab64 tab;
Tab64 *p= &tab;
Bah, p pointe vers un tableau. C'est la deuxième solution, il me semble.
Mais comme me l'a fait remarquer Bruno, il n'y a pas de conversion.
C'est juste que *p a une valeur de type pointeur vers int.
ou d'exception sur certains opérateur (& et sizeof,
et +, []...
Non, ces opérateurs attendent des valeurs. Et la somme d'un tableau et
d'un entier sera bien un pointeur, non ?
En fait, je parle des énoncés
tel que ceux de la faq :
http://www.eskimo.com/~scs/c-faq.com/aryptr/aryptrequiv.html
ce qui
n'est pas faux, mais dont la cause semble être le fait que derrière ces
opérateurs, une lvalue n'est pas convertie en rvalue).
Là, je suis perdu.
Il me semble que & et sizeof s'appliquent à des lvalue (semantiquement
un objet - avec une adresse), alors que (tous ?) les autres opérateurs
s'appliquent à des rvalue (sémantiquement une valeur).
Ma question est simple : cette phrase est-elle vraie ?
Pas dans un contexte de logique booléenne. Après,
si on acepte d'avoir une valeur de véracité continue
entre 0 et 1, je lui mets environ 0,8...
Ha bon ? Mais pourquoi ? Je parle de la phrase du début (je ne sais pas
si je suis clair).
Le 29-03-2006, Yoxoman <yhpnfyrqber@tznvy.pbz> a écrit :
"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
On parle par exemple du nom du tableau (alors que si p pointe vers un
tableau, il me semble que *p est également concerné par cette
conversion),
Quelle conversion ? Et quel type de p ?
int tab[64];
int* p= tab;
ou bien
typedef int Tab64[64];
Tab64 tab;
Tab64 *p= &tab;
Bah, p pointe vers un tableau. C'est la deuxième solution, il me semble.
Mais comme me l'a fait remarquer Bruno, il n'y a pas de conversion.
C'est juste que *p a une valeur de type pointeur vers int.
ou d'exception sur certains opérateur (& et sizeof,
et +, []...
Non, ces opérateurs attendent des valeurs. Et la somme d'un tableau et
d'un entier sera bien un pointeur, non ?
En fait, je parle des énoncés
tel que ceux de la faq :
http://www.eskimo.com/~scs/c-faq.com/aryptr/aryptrequiv.html
ce qui
n'est pas faux, mais dont la cause semble être le fait que derrière ces
opérateurs, une lvalue n'est pas convertie en rvalue).
Là, je suis perdu.
Il me semble que & et sizeof s'appliquent à des lvalue (semantiquement
un objet - avec une adresse), alors que (tous ?) les autres opérateurs
s'appliquent à des rvalue (sémantiquement une valeur).
Ma question est simple : cette phrase est-elle vraie ?
Pas dans un contexte de logique booléenne. Après,
si on acepte d'avoir une valeur de véracité continue
entre 0 et 1, je lui mets environ 0,8...
Ha bon ? Mais pourquoi ? Je parle de la phrase du début (je ne sais pas
si je suis clair).
Le 29-03-2006, Yoxoman a écrit :"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
On parle par exemple du nom du tableau (alors que si p pointe vers un
tableau, il me semble que *p est également concerné par cette
conversion),
Quelle conversion ? Et quel type de p ?
int tab[64];
int* p= tab;
ou bien
typedef int Tab64[64];
Tab64 tab;
Tab64 *p= &tab;
Bah, p pointe vers un tableau. C'est la deuxième solution, il me semble.
Mais comme me l'a fait remarquer Bruno, il n'y a pas de conversion.
C'est juste que *p a une valeur de type pointeur vers int.
ou d'exception sur certains opérateur (& et sizeof,
et +, []...
Non, ces opérateurs attendent des valeurs. Et la somme d'un tableau et
d'un entier sera bien un pointeur, non ?
En fait, je parle des énoncés
tel que ceux de la faq :
http://www.eskimo.com/~scs/c-faq.com/aryptr/aryptrequiv.html
ce qui
n'est pas faux, mais dont la cause semble être le fait que derrière ces
opérateurs, une lvalue n'est pas convertie en rvalue).
Là, je suis perdu.
Il me semble que & et sizeof s'appliquent à des lvalue (semantiquement
un objet - avec une adresse), alors que (tous ?) les autres opérateurs
s'appliquent à des rvalue (sémantiquement une valeur).
Ma question est simple : cette phrase est-elle vraie ?
Pas dans un contexte de logique booléenne. Après,
si on acepte d'avoir une valeur de véracité continue
entre 0 et 1, je lui mets environ 0,8...
Ha bon ? Mais pourquoi ? Je parle de la phrase du début (je ne sais pas
si je suis clair).
Yoxoman wrote:"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)Bon, reprenons...
(snip)
Et on peut effectivement, *dans les deux cas*, utiliser de façon
interchangeable la syntaxe tableau et la syntaxe pointeur - puisqu'en
fait la syntaxe tableau n'est guère plus que du sucre syntaxique.
Je pense aussi. Mais il me semble que c'est en contradiction avec la fin
de
http://www.eskimo.com/~scs/c-faq.com/aryptr/aryptr2.html
il me semble que *p est également concerné par cette
conversion),
Quelle conversion ?-)
(snip)
La seule conversion (implicite, j'entend) est celle qui a lieu quand tu
passe un tableau en paramètre à une fonction.
(snip)
Oui.
Ma question est simple : cette phrase est-elle vraie ?
Laquelle ?-)
Celle du début... :)
Yoxoman wrote:
"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
Bon, reprenons...
(snip)
Et on peut effectivement, *dans les deux cas*, utiliser de façon
interchangeable la syntaxe tableau et la syntaxe pointeur - puisqu'en
fait la syntaxe tableau n'est guère plus que du sucre syntaxique.
Je pense aussi. Mais il me semble que c'est en contradiction avec la fin
de
http://www.eskimo.com/~scs/c-faq.com/aryptr/aryptr2.html
il me semble que *p est également concerné par cette
conversion),
Quelle conversion ?-)
(snip)
La seule conversion (implicite, j'entend) est celle qui a lieu quand tu
passe un tableau en paramètre à une fonction.
(snip)
Oui.
Ma question est simple : cette phrase est-elle vraie ?
Laquelle ?-)
Celle du début... :)
Yoxoman wrote:"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)Bon, reprenons...
(snip)
Et on peut effectivement, *dans les deux cas*, utiliser de façon
interchangeable la syntaxe tableau et la syntaxe pointeur - puisqu'en
fait la syntaxe tableau n'est guère plus que du sucre syntaxique.
Je pense aussi. Mais il me semble que c'est en contradiction avec la fin
de
http://www.eskimo.com/~scs/c-faq.com/aryptr/aryptr2.html
il me semble que *p est également concerné par cette
conversion),
Quelle conversion ?-)
(snip)
La seule conversion (implicite, j'entend) est celle qui a lieu quand tu
passe un tableau en paramètre à une fonction.
(snip)
Oui.
Ma question est simple : cette phrase est-elle vraie ?
Laquelle ?-)
Celle du début... :)
"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
On entend souvent des formulations plus ou moins diverses et
compliquées sur cette conversion tableau-pointeur, ce qui fait qu'on a
du mal à s'y retrouver.
On parle par exemple du nom du tableau (alors que si p pointe vers un
tableau, il me semble que *p est également concerné par cette
conversion), ou d'exception sur certains opérateur (& et sizeof, ce
qui n'est pas faux, mais dont la cause semble être le fait que
derrière ces opérateurs, une lvalue n'est pas convertie en rvalue).
Ma question est simple : cette phrase est-elle vraie ?
"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
On entend souvent des formulations plus ou moins diverses et
compliquées sur cette conversion tableau-pointeur, ce qui fait qu'on a
du mal à s'y retrouver.
On parle par exemple du nom du tableau (alors que si p pointe vers un
tableau, il me semble que *p est également concerné par cette
conversion), ou d'exception sur certains opérateur (& et sizeof, ce
qui n'est pas faux, mais dont la cause semble être le fait que
derrière ces opérateurs, une lvalue n'est pas convertie en rvalue).
Ma question est simple : cette phrase est-elle vraie ?
"La valeur d'un tableau est un pointeur vers son premier élément".
(valeur dans le sens rvalue. D'ailleurs ce mot peut-il avoir un autre
sens ?)
On entend souvent des formulations plus ou moins diverses et
compliquées sur cette conversion tableau-pointeur, ce qui fait qu'on a
du mal à s'y retrouver.
On parle par exemple du nom du tableau (alors que si p pointe vers un
tableau, il me semble que *p est également concerné par cette
conversion), ou d'exception sur certains opérateur (& et sizeof, ce
qui n'est pas faux, mais dont la cause semble être le fait que
derrière ces opérateurs, une lvalue n'est pas convertie en rvalue).
Ma question est simple : cette phrase est-elle vraie ?
Cette phrase est confusante.
Cette phrase est confusante.
Cette phrase est confusante.
On parle par exemple du nom du tableau
On parle par exemple du nom du tableau
On parle par exemple du nom du tableau