Ver la versión completa : [Ayuda] Dudas programación C para éxamen mañana
Bizkaitarra
06/06/2010, 10:39
Mañana tengo éxamen de Arquitectura de computadores y tengo que programar cosillas en paralelo con C y PVM
EL problema es que yo de C pues como que no se demasiado y tengo varias dudas. Haber si hay suerte y poniendooslas me las podeis aclarar ;)
En está línea:
tareas_lanzadas = pvm_spawn (arg[0],(char **)0, PvmTaskDefault,0,tareas,array_tids);
¿Qué significa lo que he puesto en negrita? ¿Null?
Y otra dudillas
info = pvm_config(&nhost,&narch,&PVM);
¿Qué significa el valor & en los argumentos? Creo que significa que son argumentos de salida o así ¿no?
struct pvmhostinfo *PVM;
Creo que significa que crea una estructura del tipo pvmhostinfo, ¿es correcto? ¿El * se pone porque es un puntero?
Muchas gracias por las respuestas ;)
Mañana tengo éxamen de Arquitectura de computadores y tengo que programar cosillas en paralelo con C y PVM
EL problema es que yo de C pues como que no se demasiado y tengo varias dudas. Haber si hay suerte y poniendooslas me las podeis aclarar ;)
En está línea:
tareas_lanzadas = pvm_spawn (arg[0],(char **)0, PvmTaskDefault,0,tareas,array_tids);
¿Qué significa lo que he puesto en negrita? ¿Null?
Pues char* es un puntero a carácter, que se suele usar para representar una cadena de caracteres. Asi que char** es un puntero a una cadena de caracteres, las cadenas de caracteres en C, deben acabar en el byte cero, asi que (char**)0 crea un puntero a una cadena vacia. No se para que se usa porque no conozco Pvm, pero sería algo asi.
EDIT: exacto, he mirado, y el segundo parámetro es:
argv Pointer to an array of arguments to the executable (if supported on the target machine), not including the executable name, with the end of the array specified by NULL. argv[0] of the spawned task is set to the executable path relative to the PVM working directory (or absolute if an absolute filename was specified). If the executable needs no arguments, then the second argument to pvm_spawn is NULL.
Asi que lo que hace es eso, pasa un puntero a cadena vacia... si, podrias poner NULL y listo.
Y otra dudillas
info = pvm_config(&nhost,&narch,&PVM);
¿Qué significa el valor & en los argumentos? Creo que significa que son argumentos de salida o así ¿no?
El & significa que estás pasando a la función, la dirección en memoria de esas variables, asi la funcion recibe la direccion de esos parámetros (no sólo su valor), y así puede modificarlos dentro de la función.
struct pvmhostinfo *PVM;
Creo que significa que crea una estructura del tipo pvmhostinfo, ¿es correcto? ¿El * se pone porque es un puntero?
Crea un puntero a estructura pvmhostinfo.
Muchas gracias por las respuestas ;)
Espero no cagarla:
2º El & significa que pasas la variable por referencia y no por valor a la función. Si la modificas en la función, modificas la original.
3ª Estas declarando un puntero a una estructura pvmhostinfo. No crea ninguna estructura (creo)
Edit:
Que lento soy escribiendo, jejeje
Bizkaitarra
06/06/2010, 11:16
Muchas gracias a los dos :)
Es probable que os vaya poniendo alguna más jeje pero de momento todo claro :)
xzakox esta totalmente en lo cierto...
y en el tercer caso estas creando un puntero a una estructura, pero, donde demonios esta la "forma" de la estructura?
Bizkaitarra
06/06/2010, 12:43
xzakox esta totalmente en lo cierto...
y en el tercer caso estas creando un puntero a una estructura, pero, donde demonios esta la "forma" de la estructura?
Creo que la forma está arriba que incluye la librería de PVM ;)
a vale, en un #define, #include o lo que sea, ostias...
SplinterGU
06/06/2010, 20:46
nop, esta mal lo que te dijeron...
(char **) es un cast de un dato, un cast de tipo puntero a puntero, NULL realmente no existe como dato, NULL equivale a 0, en este caso lo que esta haciendo es pasando NULL como bien dijiste, no crea ninguna cadena vacia, grave error pensar eso.
cuando los parametros llevan & como bien han dicho es pasar la referencia a ese parametro, no su valor, puede ser un parametro de salida, pero no siempre lo es, tambien es una forma de pasar un dato sin hacerlo por valor (o copia), solo se pasa el puntero a este, y entonces es meten menos datos en el stack.
jduranmaster
06/06/2010, 22:29
otra recomendación: a los listillos que ponen ese tipo de examenes de programación les encanta poner el tipo void* en las funciones. void* es equivalente a object de JAVA, es decir cualquier objeto. suerte con tu examen colega.
Bizkaitarra
06/06/2010, 22:29
Bueno, mas o menos he pillado los conceptos :) muchas gracias a todos, a ver que tal mañana....
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.