Bueno, el tema se complica si me dijiste que has empezado con C/C++ hace cosa de un mes. En el código estoy manejando cadenas y punteros:
http://www.cplusplus.com/doc/tutorial/arrays/http://www.cplusplus.com/doc/tutorial/pointers/Antes de que te lo explique, déjame mencionarte que en:
char *cadena es simplemente un parámetro. Si utilizásemos esta función deberíamos pasar una cadena, un array, al parámetro llamado
cadena, ¿entiendes? Mira esto para más información:
http://www.cplusplus.com/doc/tutorial/functions/http://www.cplusplus.com/doc/tutorial/functions2/A lo que iba, cuando hayas estudiado cadenas y punteros entenderás que (supongamos el siguiente ejemplo):
#include <stdio.h>
#include <string.h>
int main()
{
char string[] = "Hola";
char *ptr = string;
printf("Elementos de la variable string:\n");
for(int a
= 0; a
<= strlen(string
); a
++) {
printf("string[%d] = %c\n", a
, string
[a
]); }
printf("\nElementos de la variable ptr:\n");
for(int b
= 0; b
<= strlen(ptr
); b
++) {
printf("ptr[%d] = %c\n", b
, ptr
[b
]); }
return 0;
}
ptr es un puntero que apunta a la variable (cadena)
string. Al apuntar se reservan 5 celdas de memoria (vamos a llamarlo así) y se pone en
ptr el contenido de
string. O sea, quedaría una cosa así:
string[0] = “H” (siempre empieza por la celda 0)
string[1] = “o”string[2] = “l”string[3] = “a”string[4] = “\0” (carácter nulo para finalizar la cadena)
y lo mismo con
ptr:
ptr[0] = “H”
ptr[1] = “o”
ptr[2] = “l”
ptr[3] = “a”
ptr[4] = “\0”Entonces esto es aplicable a la función
strlen.
ptr apunta a
cadena. Lo bueno viene ahora. Ponemos por caso que le pasamos, al parámetro de la función, la cadena: elhacker. Luego la cadena
cadena quedaría:
cadena[0] = “e”
cadena[1] = “l”
cadena[2] = “h”
cadena[3] = “a”
cadena[4] = “c”
cadena[5] = “k”
cadena[6] = “e”
cadena[7] = “r”
cadena[8] = “\0”y
ptr igual. Con el bucle avanzamos
ptr hasta la penúltima celda (
ptr[7]) pero
cadena sigue en la primera celda (
cadena[0]). Entonces se resta, en este caso 8 – 0, y queda el tamaño final.
Sé que lo explico fatal y fantasma306 lo explicó más breve y simple pero mira, así tienes diferentes opciones
.