char a [] = "EFG\r\n" ;
¿Cuántos elementos habrá en la matriz creada por la declaración anterior?¿Cuántos elementos habrá en la matriz?
char a [] = "EFG\r\n" ;
¿Cuántos elementos habrá en la matriz creada por la declaración anterior?¿Cuántos elementos habrá en la matriz?
6 caracteres: E
F
G
\r
\n
\0
Esto se puede ver por sí mismo mediante la ejecución:
char a [] = "EFG\r\n" ;
printf("%d\n", sizeof(a));
// 6
El siguiente código muestra el valor de cada byte:
char a [] = "EFG\r\n" ;
int length = sizeof(a), i;
for(i = 0; i < length; i++)
{
printf("0x%02x ", a[i]);
}
// 0x45 0x46 0x47 0x0d 0x0a 0x00
6, con la prueba por Ideone (mira los errores).
Editar: En realidad, el ejemplo se veía así en un primer momento:
#include <iostream>
template<class T, int N>
int length_of(T (&arr)[N]){
return N;
}
int main(){
char a [] = "EFG\r\n" ;
std::cout << length_of(a) << std::endl;
}
Pero quería que sea breve y evitar incluye. :)
D'oh, pasé demasiado tiempo en mi pequeño mundo de TMP. :) – Xeo
N.B: No necesita paréntesis con sizeof. – Johnsyweb