c++ - verbo - uso correcto del gerundio
¿Cuál es la diferencia entre "hola" y{"hola"}? (4)
En C / C ++, ¿cuál es la diferencia entre los siguientes dos códigos de línea:
char *str1="hello";
char *str2={"hello"};
Estilo solo en este caso Ambos dan como resultado lo mismo, y ambos tienen mala forma. Deberías haber usado const char * str1="hello";
.
No hay diferencia entre una matriz y una "cadena", ya que una cadena es una matriz de caracteres.
Según el estándar C de 2011, cláusula 6.7.9 Inicialización, párrafo 11: "El inicializador para un escalar debe ser una expresión única, opcionalmente encerrado entre llaves ..."
Eso es. No hay diferencia semántica; las llaves simplemente pueden estar presentes o pueden estar ausentes, sin ningún cambio en el significado.
Ver https://.com/a/3462768/153225 .
Las llaves son redundantes.
La generación del ensamblador del siguiente código con "gcc -S" confirma que generan exactamente lo mismo (con una constante ligeramente diferente en cada caso):
#include <iostream>
using namespace std;
void test1() {
const char *str1="hello1";
cout << str1 << endl;
}
void test2() {
const char *str2={"hello2"};
cout << str2 << endl;
}
int main() {
test1();
test2();
}