capitulo10

5
10. Ejercicios 10.1 Encuentra los errores en la siguiente declaración de punteros: No se puede declarar a un variable con el &. Dicha variable representa la dirección de memoria y no lo asignado El valor de defecto, el que cuando no se indica nada en concreto (char) depende del compilador Numero flotante Es un puntero constante 10.2 Dada la siguiente declaración, escribir una función que tenga como argumento un puntero al tipo de dato y muestre por pantalla los campos Struct botón { Char *rotulo; Int código; }; La función puede ser la siguiente Void mostrarboton (struct botón *pb) { Printf (“rotulo del boton : %s \n” , pb ->rotulo ) ; Printf (“Codigo asociado al botón : %d\n” , pb->código ) ; }

Upload: edu-cardenas

Post on 28-Nov-2015

38 views

Category:

Documents


0 download

TRANSCRIPT

10. Ejercicios10.1 Encuentra los errores en la siguiente declaración de punteros:

No se puede declarar a un variable con el &.

Dicha variable representa la dirección de memoria y no lo asignado

El valor de defecto, el que cuando no se indica nada en concreto (char) depende del compilador

Numero flotante

Es un puntero constante

10.2 Dada la siguiente declaración, escribir una función que tenga como argumento un puntero al tipo de dato y muestre por pantalla los campos

Struct botón

{

Char *rotulo;

Int código;

};

La función puede ser la siguiente

Void mostrarboton (struct botón *pb){Printf (“rotulo del boton : %s \n” , pb ->rotulo ) ;Printf (“Codigo asociado al botón : %d\n” , pb->código ) ;}

10.3 Que diferencias se pueden encontrar entre un puntero a constante y una constante a puntero.

Un puntero constante es un puntero que no se puede cambiar, pero que los datos apuntados por el número pueden ser cambiados. Un puntero a constante se puede modificar para apuntar a una contante diferente, pero los datos apuntados por el puntero no se pueden cambiar.

10.4 Un array unidimensional se puede indexar con la aritmética de punteros. Qué tipo de puntero habría que definir para indexar un array bidimensional.

Printf(“números[0]=%d\n”,*números);

Printf(“números[1]=%d\n”,*(números+1));

10.5 En el siguiente código se accede a los elementos de una matriz. Acceder a los mismos elementos con aritmética de punteros.

10.6 Escribe una función con un argumento de tipo puntero a doublé y otro argumento de tipo int. El primer argumento se debe de corresponder con un array y el segundo con el número de elementos del array. La función ha de ser de tipo puntero a doublé para devolver la dirección del elemento menor.

10.7 Dada la siguiente función:

No se puede retornar una letra ese es un error del programador

Si se puede hace de otra forma

También se le pueden llamarles de esa forma a las funciones

10.8 Que diferencias se pueden encontrar entre estas dos declaraciones

El primero es una matriz 5x5

Mientras el otro es un array de punteros, se puede seleccionar una función de la lista y llamarla.

Si se pueden hacer estas asignaciones para las nuevas variables.

10.9 Dadas las siguientes declaraciones de estructuras, escribe como acceder al campo x de la variable estructura t.

La variable t es una variable de tipo estructura, por lo que se usa el operador punto para acceder al miembro f. desde el dato miembro f es necesario usar el operador flecha para acceder al campo x de la estructura fecha a la que apunta.

t.f -> x ;

El campo mes de la estructura fecha no apunta a ningún sitio , por lo cual dará problemas de asignación de memoria cuando la función gets ( ) intente colocar el resultado en el puntero que se le pasa como argumento. Para evitar esto sería necesario reservar memoria antes de llamar a gets ( ).