Quels sont les tableaux constants? Si on définit const char hex_char[] = { ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’ }; Ensuite, il ne devrait pas être modifié par programme; Qu’est-ce que ça veut dire?
Il y a quelques jours, je suis tombé sur un code dans lequel une utilisation intensive des conversions de pointeur en type à en pointeur en tableau a été effectuée pour donner une vue bidimensionnelle d’un vecteur linéaire en mémoire. Un exemple simple d’une telle technique est présenté ci-dessous pour plus de clarté: #include #include […]
J’ai le code suivant: int main(){ char **array; char a[5]; int n = 5; array = malloc(n *sizeof *array); /*Some code to assign array values*/ test(a, array); return 0; } int test(char s1, char **s2){ if(strcmp(s1, s2[0]) != 0) return 1; return 0; } J’essaie de transmettre char et un tableau de pointeurs de caractères […]
J’essaie de convertir un tampon de tableau de caractères non signé en un entier signé (et vice versa). Ci-dessous, un code de démonstration: int main(int argv, char* argc[]) { int original = 1054; unsigned int i = 1054; unsigned char c[4]; int num; memcpy(c, (char*)&i, sizeof(int)); //num = *(int*) c; // method 1 get memcpy((char […]
Pourquoi je ne peux pas définir un tableau char **pp={ “123”, “456”, “789” }; Mais je peux le définir comme un caractère * [], et l’envoyer à une fonction qui l’acceptera comme un caractère ** char *pp[]={ “123”, “456”, “789” }; fun(pp); void fun(char **pointerToPointer) { //++(**pointerToPointer);//error printf(“%s”, *pointerToPointer); } //output::”123″ Et pourquoi je ne […]
Cette réponse a généré des commentaires affirmant que la construction suivante n’est pas légale C / C ++: void f (int* a) ; f ((int[]){1,2,3,4,0}) ; (voir ce lien ideone pour un programme complet). Mais nous n’avons pas pu résoudre le problème. Quelqu’un peut-il nous éclairer? Que disent les différentes normes?
J’essaie de comprendre la mémoire brute dans différentes langues lors de l’utilisation d’un tableau. Considérez le code Java suivant: Ssortingng a = “hi”; Ssortingng b = “there”; Ssortingng c = “everyone”; Ssortingng[] array = {a, b, c}; Évidemment, le tableau contient des références et non des objects; c’est-à-dire qu’il y a un tableau contigu en […]
J’essayais de comprendre la fonction malloc en C et j’ai écrit le code suivant: int i; int *arr = (int*)malloc(5*sizeof(int)); if(arr==NULL){ printf(“Failed to allocate memory for arr…\n”); exit(1); } Je pensais que cela signifiait que seulement 5 éléments pouvaient être ajoutés au tableau. Pour vérifier si cela était vrai, j’ai ajouté le code suivant: arr[0] […]
Quel est le meilleur moyen de retourner un tableau multidimensionnel à partir d’une fonction dans c? Supposons que nous devions générer un tableau multidimensionnel dans une fonction et l’appeler en tant que main. Est-il préférable de l’envelopper dans une structure ou de simplement renvoyer un pointeur en mémoire sur le tas? int *create_array(int rows, int […]
Mon cours m’a appris que les caractères sont statiques / en lecture seule. J’ai donc pensé que cela signifierait que vous ne pouvez pas les modifier après les avoir définis. Mais quand je cours: char* fruit = “banana”; printf(“fruit is %s\n”, fruit); fruit = “apple”; printf(“fruit is %s\n”, fruit); Ensuite, il comstack bien et me […]