SolariiS 0 Denunciar post Postado Março 27, 2011 estou fazendo um teste basico de selection sort passando o ponteiro de uma matriz (array) #include<stdlib.h> #include<stdio.h> #include<time.h> #define TAM 10 //selection sort void selection_sort(int *num) { int i, j, min,swap,tam; tam = TAM; for (i = 0; i < (tam-1); i++) { min = i; for (j = (i+1); j < tam; j++) { if(*(num+j) < *(num+min)) { min = j; } } if (i != min) { swap = *(num+i); *(num+i) = *(num+min); *(num+min) = swap; } } } main() { int i; int a[10] = {12, 7, 4, 50, 8, 15, 30, 21, 18, 1}; //selection sort selection_sort(&a); >>>>>>>>>>>>> cannot convert `int (*)[10]' to `int*' for argument `1' to `void selection_sort(int*)' for(i=1;i<10;i++) printf("%d \n",a[i]); system("PAUSE"); } sou novo no C, alguem sabe como resolvo? Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Março 28, 2011 Você pelo jeito não entendeu o conceito de ponteiros. int a[] = {9, 8, 7, 6, 5, 4, 3, 2, 1}; Isso cria um vetor chamado a, de tipo int[10]. Seu valor (ou seja, 'a') é o endereço de seu primeiro elemento (ou seja, igual a &a[0]). Seu valor, então, tem tipo ponteiro para int (int *). O tipo de &a é, como seu compilador avisou, um ponteiro para ponteiro para int. Sua função requer um ponteiro para int. Veja se com isso consegue resolver seu problema. Qualquer coisa poste aqui. Compartilhar este post Link para o post Compartilhar em outros sites