Está en la página 1de 15

ARRAYS Y PUNTEROS

Grupo #2

Universidad Francisco De Paula Santander


Ingeniera Electrnica
Ccuta
2017

ARRAYS Y PUNTEROS

Grupo #2

lvaro Salamanca Landinez


Docente
Universidad Francisco De Paula Santander
Ingeniera Electrnica
Ccuta
2017

Contenido

1. IntroduccinPg. 4
2. Array en lenguaje C5
3. Formas de inicializar un array.6
4. Arrays de caracteres y cadenas.7
5. Arrays multidimensionales8
6. Ejemplo de un array..9
7. Puntero en lenguaje C10
8. Declaracin de punteros..11
9. Diferencia del *y&12
10. Inicializacin de un puntero..13
11. Bibliografa.14
Introduccin

En este trabajo daremos a conocer todo, acerca de Arrays y


punteros. En un aspecto ms profundo, los arrays, permiten
almacenar muchos valores en posiciones de memoria continuas, lo
cual permite acceder a un valor u otro de manera rpida y sencilla.
Estos valores pueden ser nmeros, letras o cualquier tipo de
variable que deseemos incluso tipos de datos propios. Los punteros
Al momento de necesitar valores y estructuras dinmicas, por
ejemplo, para crear un array dinmico, con dinmico me refiero a
que su tamao puede ser establecido en tiempo de ejecucin y lo
mismo se puede hacer con las matrices (que en realidad son un
array multidimensional).
Arrays en lenguaje C

Un array es una secuencia de datos del mismo tipo, los datos se


llaman elementos de un array y se enumeran consecutivamente 0,
1, 2,... etc. el tipo del dato almacenado en un array pude ser de
cualquier tipo de dato de C.
En mltiples ocasiones es necesario almacenar gran cantidad de
informacin en una variable y a menudo sucede que no conocemos
con exactitud la cantidad de datos que debemos almacenar, pero
sabemos que s sera ms de uno, como por ejemplo almacenar las
identificaciones de las personas ingresadas al sistema.
Otros nombres que reciben los arrays unidimensionales son tablas
o vectores.
La numeracin de los elementos se denomina ndice o subndice de
un array y solo determina la posicin del elemento dentro del array
y no su valor o contenido.

Formas de inicializar un array

Si se deben asignar valores iniciales a un array podemos emplear


distintos mtodos.
pp [0] = 15;
pp [1] = 45;
pp [2] = 56;
pp [3] = 78;
pp [4] = 89;
Tambin podramos escribir lo siguiente, determinando
automticamente el tamao del array
int pp [5] = { 15, 45, 56, 78, 89 };
char ww[ ] = { a, s, I };
int pp[] = { 15, 45, 56, 78, 89 };
En C los arrays de caracteres, las cadenas, se caracterizan por tener
un elemento nulo final, que indica el fin de la cadena. Otra manera
de inicializar, escribir y leer arrays de gran tamao, es mediante un
ciclo for.
Tambin se pueden asignar variables simblicas
# define ene 31
# define feb 28
# define mar 31
int meses [12] = { ene, feb, mar,...............};

Arrays de caracteres y cadenas

Una cadena es un conjunto de caracteres, tal como << abcdef.>> las


cadenas contienen un elemento final nulo que indican fin de la
cadena.
char cadena [ ] = abcdef ;
Las cadenas se deben almacenar en un array de caracteres, pero no
todos los arrays de caracteres contiene cadenas.
Para copiar una cadena a otra variable cadena se debe utilizar la
funcin strcpy( ), donde s quiero copiar hola a la variable saludos
seria:
Strcpy( saludos,hola );
Para evitar un error debemos tener en cuenta que el tamao del
receptor sea de igual o mayor tamao que la cadena que vamos a
mover.

Arrays multidimensionales

Estos arrays contienen ms de una dimensin, los mas conocidos


son llamados matrices.
Por lo tanto estos arrays tiene mas de un subndice.
Su declaracin ser pues:
tipo nombre [numero de filas] [numero de columnas];
int matriz [5] [6];
En realidad un array de dos dimensiones es un array de arrays que
para representarlo en una forma mas cmoda se lo hace por medio
de una matriz.
La inicializacin de las matrices puede ser de la misma forma que
los vectores, teniendo en cuenta por ejemplo
Int matriz [3] [4] = { {10,20,30,110},
{40,50,60,101},
{70,80,90,100} }
El acceso a las matrices para su escritura o lectura ser similar a los
vectores, teniendo en cuenta la necesidad de al menos dos
ciclos for, uno para las filas y otro para las columnas en el caso de
una matriz bidimensional.

Ejemplo de un array

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int x,y, numeros[10][10];

for (x=0;x<10;x++)
{
for (y=0;y<10;y++)
{
numeros[x][y]=(x*10)+1+y;
}
}

for (x=0;x<10;x++)
{
for (y=0;y<10;y++)
{
printf("%d ",n umeros[x][y]);
}
printf("\n");
}

system("PAUSE");
return 0;
}

Puntero en lenguaje C

Un puntero es una variable que contiene la direccin de


memoria de un dato o de otra variable que contiene al dato en un
arreglo. Esto quiere decir, que el puntero apunta al espacio fsico
donde est el dato o la variable. Un puntero puede apuntar a un
objeto de cualquier tipo, como por ejemplo, a una estructura o una
funcin. Los punteros se pueden utilizar para referencia y
manipular estructuras de datos, para referenciar bloques de
memoria asignados dinmicamente y para proveer el paso de
argumentos por referencias en las llamadas a funciones.
Muchas de las funciones estndares de C, trabajan con punteros,
como es el caso del scanf o strcpy. Estas funciones reciben o
devuelve un valor que es un puntero. Por ejemplo: A scanf se le
pasa la direccin de memoria del dato a leer.

Declaracin de punteros

Cualificador tipo *nombre, *nombre;

El tipo indica al tipo de datos a los que apuntar el puntero, pero


como efecto de la declaracin se reservar espacio en memoria
para guardar un puntero, no para el tipo de datos al que apunta.
Existe un carcter especial que se usa como prefijo y aplicado a las
variables indica la direccin de memoria que ocupa la variable, no
el contenido (valor). Este smbolo es &. Adems existe otro prefijo,
*, que aplicado a una variable de tipo puntero indica el contenido
de la direccin a la que apunta dicho puntero. A estos dos smbolos
se les llama direccin e indireccin respectivamente.
Hay 3 formas de inicializar un puntero:
a) Inicializarlo con el valor NULL (definido en un fichero header). De
este modo estamos indicando que el puntero no apunta a ninguna
memoria concreta.
b) Inicializarlo haciendo que tome como valor la direccin de una
variable.
int *p, a;
p = &a;
A partir de estas sentencias, *p y a son alias.
c) Asignarle memoria dinmica a travs de una funcin de
asignacin de memoria. Las funciones ms habituales son calloc y
malloc, definidas en el fichero alloc.h o bien en stdlib.h
void *malloc(size_t size)
void *calloc(size_t n_items, size)

Una inicializacin de un puntero a un tipo T tendra la forma:

p = (T*)malloc(sizeof(T));

Diferencia del *y&

En C, al contrario que en otros lenguajes de programacin, se


puede obtener directamente la direccin de memoria de cualquier
variable. Esto es posible hacerlo con el operador unario "&"; asi:
char a; /* Variable 'a' de tipo char */
printf("la direccion de memoria de 'a' es: %p \n", &a);
y para obtener lo apuntado por un puntero se utiliza el operador
unario "*" de esta forma:
char a; /* Variable 'a' de tipo char */
char *pchar; /* Puntero a char 'pchar' */
pchar = &a; /* 'pchar' <- @ de 'a' */
printf("la direccion de memoria de 'a' es: %p \n", &a);
printf("y su contenido es : %c \n", *pchar);
Uno de los casos mas comunes donde se ve la relacin entre estos
dos operadores es la declaracin y utilizacin de funciones:
void Funcion ( int *int_pointer )
/* Paso de una variable de tipo entero por REFERENCIA */
/* equivalente en Modula 2: PROCEDURE Funcin ( VAR
a:INTEGER ) */
int a; a=6;
Funcin ( &a ); /* ya que la declaracin de la funcin pide la
direccin de una variable de tipo entero */

Inicializacin de un puntero

Hay varias maneras de inicializar un puntero. Una ya ha sido vista


en los ejemplos del punto anterior ( pchar = &a; ); y al igual que el
resto, consiste bsicamente en lo mismo; asignar una direccin de
memoria al puntero. Para hacer un paralelismo Modula-2 - C, en C
existe el equivalente al procedimiento NEW; la funcion malloc:
#include <stdio.h>
#include <malloc.h>
void *malloc( size_t size );
donde 'size' es el numero de bytes que queremos reservar de tipo
'void', es decir, de cualquier tipo.
char *pchar;
int *pint;
pchar = malloc (6); /* pchar apunta al primer byte de los que
se han
reservado */
pint = malloc (sizeof(int)*2);
/* pint apunta al primero de los dos enteros
que se han reservado */

Bibliografa

https://lsi.vc.ehu.eus/pablogn/docencia/manuales/C/Punteros%20
en%20C.html
https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Puntero
s
https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/
Arrays_y_cadenas_de_texto
https://www.programarya.com/Cursos/C++/Estructuras-De-
Datos/Arreglos-O-Vectores
http://profesores.fi-
b.unam.mx/ing_gpemn/cpi/fundamentos/pdfs/LenguajeC10.pdf

También podría gustarte