"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi C et C++ ignorent-ils les longueurs de tableau dans les signatures de fonction ?

Pourquoi C et C++ ignorent-ils les longueurs de tableau dans les signatures de fonction ?

Publié le 2024-12-26
Parcourir:320

Why Do C and C   Ignore Array Lengths in Function Signatures?

Passer des tableaux aux fonctions en C et C

Question :

Pourquoi C et Les compilateurs C autorisent les déclarations de longueur de tableau dans les signatures de fonction, telles que int dis(char a[1]), lorsqu'elles ne le sont pas. appliqué ?

Réponse :

La syntaxe utilisée pour transmettre des tableaux aux fonctions en C et C est une bizarrerie historique qui permet le passage d'un pointeur vers le premier élément du tableau au lieu du tableau lui-même.

Explication détaillée :

En C et C, les tableaux ne sont pas transmis par référence aux fonctions. Au lieu de cela, un pointeur vers le premier élément du tableau est transmis. Cela signifie que la notation [] dans la signature de la fonction est en fait ignorée par le compilateur.

Implications :

Ce comportement peut prêter à confusion car il apparaît comme si un array est passé par référence, mais en réalité, seul un pointeur est passé. De plus, il n'est pas possible de déterminer la longueur du tableau à partir de la signature de la fonction, ce qui peut rendre difficile le travail avec des tableaux de longueur variable.

Perspective historique :

La décision d'autoriser cette syntaxe a été prise dans les années 1970 afin de fournir un moyen pratique de transmettre des tableaux aux fonctions. Cependant, cela a depuis semé la confusion et généré des vulnérabilités potentielles en matière de sécurité. Dans la programmation moderne, il est recommandé d'éviter d'utiliser cette syntaxe et de transmettre plutôt des tableaux par référence à l'aide de pointeurs.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3