La copie d'un sous-ensemble d'un tableau dans un autre tableau / tableau de découpage dans C
Dans C, est-il intégré dans le tableau de découpage mécanisme?
Comme dans Matlab par exemple,
Une(1:4)
produirait =
1 1 1 1
Comment puis-je parvenir à C?
J'ai essayé de regarder, mais le plus proche que j'ai pu trouver est: est-ce http://cboard.cprogramming.com/c-programming/95772-how-do-array-subsets.html
subsetArray = &bigArray[someIndex]
Mais ce n'est pas exactement retourner les tranches de tableau, au lieu pointeur vers le premier élément de l'tranches de tableau...
Merci beaucoup
En C, il est courant de retour des pointeurs vers le premier élément d'un tableau, comme les pointeurs et les tableaux sont traités de la même façon. Avoir une lecture de ceci: c-faq.com/aryptr/index.html , en particulier 6.3 et 6.8
OriginalL'auteur fgar | 2013-01-31
Vous devez vous connecter pour publier un commentaire.
De ce que, en std C est pas possible. Vous devez le faire vous-même.
Si vous avez une chaîne, vous pouvez utiliser des chaînes de caractères.h bibliothèque qui prend soin de cela, mais pour les entiers il n'y a pas de bibliothèque que je sais.
En outre, après l'avoir ce que vous avez, le point à partir duquel vous souhaitez démarrer votre sous-ensemble, est en fait facile à mettre en œuvre.
En supposant que vous connaissez la taille de votre "main" de tableau et qui est un tableau d'entiers, vous pouvez le faire:
Espère que cette aide.
OriginalL'auteur Afonso Tsukamoto
Merci à tous pour souligner qu'il n'existe pas de tel mécanisme intégré dans C.
J'ai essayé d'utiliser ce que @Afonso Tsukamoto a suggéré, mais j'ai réalisé que j'avais besoin d'une solution pour un tableau multi-dimensionnel. Donc j'ai fini par écrire ma propre fonction. Je vous mets ici au cas où quelqu'un d'autre est à la recherche de semblables réponse:
Si Un est mon entrée (tableau d'origine) et B est de ma sortie (les tranches de tableau).
J'ai appeler la fonction comme ceci:
Par exemple:
Ceci va produire un résultat (tableau multidimensionnel B[1][4]) que dans Matlab est égal au résultat d'Un(target_row,1:4).
Je suis novice en C, donc s'il vous plaît corrigez-moi si je me trompe ou si ce code peut être mieux... merci encore 🙂
OriginalL'auteur fgar
En C,pour autant que je sais, le nom du tableau est juste considéré comme un pointeur const. Donc, vous ne savez jamais la taille du sous-ensemble. Et aussi, vous pouvez attribuer un arrary à une nouvelle adresse. Ainsi, vous pouvez simplement utiliser un pointeur à la place. Mais vous devez gérer la taille du sous-ensemble vous-même.
OriginalL'auteur maple