Pregunta:
¿Ayuda con arrays en c++?
Camila
2014-06-15 10:54:07 UTC
Porque no me da error al no determinar el parámetro en el array

int main()
{

char saludos[]={'H','o','l','a','\0'};
printf("\n\n Palabra es: %s",saludos);
getch();
}
Cuatro respuestas:
aem
2014-06-16 14:41:43 UTC
Hola:

cuando declaras[] sin valor, lo que estas haciendo es declarando un puntero al lugar de inicio del arreglo, más cuando le declaras un contenido, entonces le estas asignando un valor segun la cantidad de caracteres del contenido, o sea que deja de ser un puntero para ser una cadena (string) cuyo fin está marcado por el caracter de fin de string, que es el '\0'

Aclarando definiciones,

PUNTERO, no asigna lugar físico en memoria para el contenido, sino un lugar de inicio de un conjunto de elementos del mismo tipo que el puntero.

STRING, es un puntero al que se le ha asignado un valor a esos elementos sucesivos (del mismo tipo que el puntero) terminados en el caracter nulo (o fin de string)

http://es.wikipedia.org/wiki/C_string

ARREGLO (o matriz), es un determinado número de igual tipo de elementos donde el que lleva el subindice 0, se comportaría como el puntero al mismo, y los indices subsiguientes se usen o no, ya estan asignados en memoria.

Originalmente el idioma C y el C++ no cuenta con string, pero es posible crearlos mediante un puntero y asignando las posiciones sucesivas, terminandolas en el caracter nulo, donde cada elemento se corresponde con la llamada aritmética de punteros Te paso un link por si querés ahondar en el asunto.



http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/Punteros#Aritm.C3.A9tica_de_Punteros



Lo que vos has declarado, como un arreglo, realmente es un tipo especial de arreglo que se usa en C y C++ para los string, por eso no te dá error, pero tiene algunas limitaciones si lo querés usar como un arreglo común, y tiene sus ventajas porque permite usar la libreria string.h para comparar, copiar, invertir concatenar y otras muchas cosas que se hacen con los string pero no con los arreglos.



Dios te bendiga

Saludos

Antonio
?
2014-06-15 12:40:50 UTC
No hay ninguna función, no entiendo qué parámetro podrías determinar.



De todos modos, si hicieras:

printf("\n\n Caracter fantasma: %c",saludos[5]);

tampoco te daría error, por eso es que no se deben utilizar arrays en C++.

Una cosa es que compile y otra que esté bien..
?
2014-06-15 11:59:27 UTC
http://codepad.org/GgBX9RYK



Cuando vas a entrar una cadena no hace falta poner ' ' letra a letra sino "comillas dobles por que se trata de un string" (cadena), un string es una cadena de chars.

char saludos[]={"Hola"};

Eso en memoria tiene el efecto que esperas que es:

char saludos[5];

saludos[0]='H';

saludos[1]='o';

saludos[2]='l';

saludos[3]='a';

saludos[4]='\0';
?
2014-06-15 11:01:03 UTC
%s es para imprimir cadenas

%c para imprimir carácter



no te da error porque tu estas indicando que quieres imprimir una cadena %s y le pasas como parámetro un array de caracteres, que es una cadena


Este contenido se publicó originalmente en Y! Answers, un sitio web de preguntas y respuestas que se cerró en 2021.
Loading...