Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Pino1952 en 30 de Noviembre 2014, 18:41
-
Hola a todos.
Primero una pequeña aclaración, créanme que tengo toda la mañana consultando al maestro google y no puedo dar con la solución.
El caso es que estoy en el capítulo punteros y cree un programita que dejo a continuación de un apuntador a un arreglo de 10 enteros, me parece que la manera de cargar los datos es correcta pero en lo que estoy lidiado es con imprimirlos.-
#include <stdio.h>
#define MAX 10
int main(void){
int *ptrVector[MAX], i;
for(i=0; i<MAX; i++){
*(ptrVector + i) = &i;
}
for(i=0; i<MAX; i++){
printf("%d ", *(ptrVector + i));
}
printf("\n\n Pulse una tecla para finalizar..."); getchar();
return 0;
}
C:\ProgramasNotepad\Punteros.c: In function 'main':
C:\ProgramasNotepad\Punteros.c:13:3: warning: format '%d' expects argument of type 'int', but argument 2 has type 'int *' [-Wformat=]
printf("%d ", *(ptrVector + i));
^
Es todo, espero que puedan ayudarme a encontrar la sintaxis correcta.-
Saludos.
Daniel
-
Hola, el trabajo con punteros es bastante lioso.
La declaración que haces int *ptrVector[MAX] no estoy seguro de que sea una declaración correcta. Estás creando un array de punteros.
Esta expresión creo que no tiene sentido: *(ptrVector + i)
Con el asterisco delante estás desreferenciando, pero ¿qué desreferencias con *(ptrVector + i)?
He probado este código que sí funciona aunque no sé si es lo que pretendías:
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
int main(void){
int a[MAX];
int (*ptrVector)[MAX] = &a; //Referencia al primer elemento de a
int i;
for(i=0; i<MAX; i++){
(*ptrVector)[i] = i; //Desreferenciamos y asignamos valores
}
for(i=0; i<MAX; i++){
printf("%d ", (*ptrVector)[i]); //Desreferenciamos y leemos valores
}
printf("\n\n Pulse una tecla para finalizar..."); getchar();
return 0;
}
Saludos!!
-
Hola Mastermind.
Muchas gracias por ocuparte y decirte que tu código funciona perfectamente, de cualquier manera expongo el mío que se asemeja un poco más a la manera que yo pretendía, hacer lo más posible con notación de punteros.-
Bueno a seguir leyendo, practicando y aprendiendo.-
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX 10
int main(void){
int vector[MAX], *ptrVector = &vector[0], i, hora = time(NULL);
srand(hora);
for(i=0; i<MAX; i++){
*(ptrVector + i) = rand()% 100;
}
printf("\n\n ");
for(i=0; i<MAX; i++){
printf("%d ", *(ptrVector + i));
}
printf("\n\n Pulse una tecla para finalizar..."); getchar();
return 0;
}
Saludos.
Daniel