<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PcNoticias.com &#187; C</title>
	<atom:link href="http://www.pcnoticias.com/category/programacion/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pcnoticias.com</link>
	<description>Noticias de PC y Gatgeds a diario.</description>
	<lastBuildDate>Sat, 06 Mar 2010 01:06:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Punteros en C</title>
		<link>http://www.pcnoticias.com/programacion/punteros-en-c/</link>
		<comments>http://www.pcnoticias.com/programacion/punteros-en-c/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 09:46:39 +0000</pubDate>
		<dc:creator>Moi</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://www.pcnoticias.com/?p=95</guid>
		<description><![CDATA[Alguna vez os habeís peleado con los punteros en C, seguramente que sí, la verdad es que es más que una comida de cabeza para todo o mas de uno, yo voy a intentar sentar una bases, a todo este jaleo de punteros que existen, para ello voy a utilizar el lenguaje C, que es [...]]]></description>
			<content:encoded><![CDATA[<p>Alguna vez os habeís peleado con los punteros en C, seguramente que sí, la verdad es que es más que una comida de cabeza para todo o mas de uno, yo voy a intentar sentar una bases, a todo este jaleo de punteros que existen, para ello voy a utilizar el lenguaje C, que es el lenguaje propio de punteros.</p>
<p>Decir, que una vez que se sabeny se conocen perfectamente, es algo bastante bonito, y bastante curioso que merece la pena tocar, por lo tanto vamos a explicar en primer lugar que es la memoria, y por consiguiente como se accede a ella.</p>
<p>La memoria en primer lugar tiene direcciones de memoria, que generalmente se establecen, con numeros hexadecimales, es decir, una posición de memoria podría ser la: 0&#215;128, bien, si tenemos este codigo:</p>
<p>int var1;</p>
<p>Lo que hace el compilador generalmente es reserva 4 bytes, para la utilización de ese entero, reserva 4 bytes en memoria, si una palabra de memoria, ocupa 32 bits, pues un entero será una posicion o una palabra de memoria.</p>
<p>Cuando hago lo siguiente:</p>
<p>int * pnum;</p>
<p>El compilador me reserva un puntero, que en general también son 4 bits, que apuntará a un entero, por lo tanto, si yo ahora hago:</p>
<p>pnum=&amp;var1;</p>
<p>Ese puntero lo apuntare a la direccion de memoria 0&#215;128 que tenia la dirección de memoria de var1, y ya podré modificar la variable var1, a partir de ese puntero, de la forma:</p>
<p>*pnum=5;</p>
<p>Ahora var1 tiene un valor de 5.</p>
<p>Bien hasta aqui creo que todo más o menos esta entendido, lo que debemos de tener claro, es que la memoria es nuestra, y por tanto como la memoria es nuestra, podemos hacer lo que queramos con ella, con eso quiero decir, que podemos poner un puntero, apuntando a una direción de memoria y a partir de ahí, ir tocando poco a poco la memoria.</p>
<p>En C, por ejemplo, si creamos un puntero de tipo Int, sabemos que este puntero apuntará a un tipo de datos int, podemos ir recorriendo pero sabemos que hacemos una suma de un 1 a ese puntero es lo que mismo que recorrer 4 bytes a ese puntero, por que se trata de un puntero de tipo int. Veamos un ejemplo</p>
<p>int * p;</p>
<p>int aux [] = {1,2,3,4,5,6,7,8,9}; // Creamos el array que recorreremos.</p>
<p>p = aux; // apuntamos p a inicio del array aux.</p>
<p>p++; // CORRERA 4 bytes, en la memoria</p>
<p>print(&#8221;%d\n&#8221;,p); // Imprimira la segunda posicion del array.</p>
<p>Bien, como observación podemos ver que para posicionar el puntero p, podemos hacerlo asi, o también podemos hacerlo de la siguiente forma:</p>
<p>p = &amp;(x[0]);</p>
<p>Es decir, p apunta a la dirección de memoria en la que empieza el array de datos.</p>
<p>De esta forma, he enseñado un poco lo que son punteros, y aritmetica de punteros con ellos, seguiré hablando en otra entrada, pero lo que esta claro es que con lo punteros puedes apuntar a cualquier sitio de la memoria, modificarla y hacer lo que quieras, es lo bueno que tienen los punteros.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pcnoticias.com/programacion/punteros-en-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
