Questions sur pointer-arithmetic

17
réponses

Avec les tableaux, pourquoi est-ce le cas que a[5] == 5[a]?

comme Joel le souligne dans podcast de débordement de pile # 34 , dans C Langage de programmation (alias: K ... l dit que c'est à cause de l'arithmétique pointer mais je ne comprends toujours pas. pourquoi a[5] == 5[a] ?
demandé sur 2008-12-19 20:01:33
5
réponses

Pour un pointeur p, pourrait p

est-il possible, pour une variable de pointeur p, qui p Remarque: Aucune des hypothèses sont formulées. Considérez tout compilateur / plate-forme/architecture / OS où il y a une chance que cela puisse se produire ou non.
demandé sur 2014-12-03 16:30:09
2
réponses

Ptrdiff t peut-il représenter toutes les soustractions de pointeurs vers des éléments du même objet de tableau?

pour la soustraction des pointeurs i et j aux éléments du même objet de tableau la note dans [expr.ajouter#5] se ... langue anglaise. EDIT: Related: Pourquoi est la taille maximale d'un tableau est "trop grand"?
demandé sur 2018-03-20 12:27:29
4
réponses

Faut-il parler d'un cas particulier de tranchage d'objet?

disons que j'ai une classe Derived qui dérive de la classe Base alors que sizeof(Derived) > sizeof(Base) . Mainten ... correct pour une telle erreur de programmation? Doit-il être considéré comme un cas de objet de découpage ?
demandé sur 0000-00-00 00:00:00
1
réponses

Arithmétique des pointeurs au-delà des limites des sous-objets

est-ce que le code suivant (qui effectue l'arithmétique des pointeurs à travers les limites des sous-objets) a un comport ... 2; // is this UB? } assert(!aligned || b.rest[1] == 1.0); assert(p == &b.initial[0]); return 0; }
demandé sur 2013-03-05 10:53:30
8
réponses

Quelle est la raison d'être des limites à l'arithmétique ou à la comparaison des pointeurs?

en C/C++, addition ou soustraction sur le pointeur est défini seulement si le pointeur résultant se trouve à l'intéri ... ent effectivement définir un ordre total sur tous les pointeurs comme démontré par cette réponse , j'en doute.
demandé sur 2017-12-03 11:05:11
1
réponses

C'est le un passé la fin de" pointeur d'un tableau non type un concept valide en C++?

Le C++ standard [sec 5.7] dit: si l'opérande de pointeur et le résultat pointent vers des éléments du même objet de t ... nt> v(&a, (&a)+1); ci-dessus extrait de la compile et fonctionne très bien (avec g++), mais est-il valable?
demandé sur 2013-01-24 20:15:47
1
réponses

c++ syntaxe intéressante pour imprimer une nouvelle ligne dans std:: cout [dupliquer]

Cette question a déjà une réponse ici: Subscripting un littéral de chaîne ... ma question concerne le " \n"[j==5] partie. Personne ne sait comment fonctionne exactement cette syntaxe de travail?
demandé sur 2017-05-14 11:31:56
4
réponses

Quel est le résultat de NULL + int?

j'ai vu la macro suivante être utilisée dans les implémentations VBO OpenGL: #define BUFFER_OFFSET(i) ((char *)NULL + (i ... o? Peut-il être remplacé par une fonction? Plus exactement, quel est le résultat de l'incrémentation D'un pointeur NULL?
demandé sur 2011-11-27 08:49:12
6
réponses

Prendre l'adresse d'une variable locale est-il une expression constante en C++11?

La suite de C++11 programme: int x = 42; void f() { int y = 43; static_assert(&x < &y, "foo" ... pression constante est en raison de la comparaison de sans rapport avec les pointeurs, pas de la sous-expression &y.
demandé sur 2013-08-21 12:24:54
4
réponses

Façon Portable et sûre d'ajouter un offset byte à n'importe quel pointeur

je suis assez nouveau à travailler avec C++ et je n'ai pas saisi toutes les subtilités et subtilités du langage. qu'est- ... iliser static_cast ou reinterpret_cast pour cela? dois-je supposer que la valeur du pointeur lui-même n'est pas signée?
demandé sur 2013-04-10 22:55:14
5
réponses

C arithmétique des indicateurs

étant donné ce code: int *p, *q; p = (int *) 1000; q = (int *) 2000; Qu'est-ce que q - p et comment?
demandé sur 2010-01-22 16:35:11
3
réponses

Élément d'accès au-delà de L'extrémité D'un tableau en C

j'ai lu le livre de K & R sur C, et j'ai trouvé que le pointeur arithmétique en C permet d'accéder à un élément au-del ... et de faire presque n'importe quoi avec la mémoire mais je ne comprends pas, quel est le but de cette particularité?
demandé sur 2009-06-20 09:27:26
1
réponses

Comment éviter la multiplication en arithmétique pointer?

si j'écris int main(int argc, char *argv[]) { int temp[50][3]; return &temp[argc] - &temp[0]; } ... fonctionnement du programme est passé de 9,2 secondes à 7,4 secondes. donc oui, c'est en effet très lente.
demandé sur 2014-02-13 15:41:00
1
réponses

Adresse forme canonique et pointeur arithmétique

sur les architectures compatibles AMD64, les adresses doivent être sous forme canonique avant d'être déréférencées. ... es? L'OS vous garantit-il de ne jamais vous attribuer de mémoire dont la plage d'adresses ne varie pas du 47ème bit?
demandé sur 2016-08-16 17:35:55