¿Qué significa realmente con la palabra "C-string" en C/C++? Puntero a char? ¿Matriz de personajes? O tal vez const-puntero/const matriz de caracteres?C-string definición en C/C++
Respuesta
Una "cadena C" es una matriz de caracteres que termina con un byte de 0 (carácter nulo). La matriz, no cualquier puntero, es la cadena . Por lo tanto, cualquier subcampo terminal de una cadena C también es una cadena C. Los punteros de tipo char *
(o const char *
, etc.) a menudo se consideran punteros a cadenas, pero en realidad son punteros a un elemento de una cadena, generalmente se tratan como un puntero al elemento inicial de una cadena.
¿Entonces los punteros a char no son una C-string? – FrozenHeart
@NikitaTrophimov No. R ... lo dijo muy exactamente: una cadena en C es una matriz terminada en ''\ 0''. 'char *' y 'char const *' se usan a menudo para referirse a una cadena C, pero no son una cadena C en sí mismas. –
¡Muchas gracias! – FrozenHeart
Const o matriz de caracteres no const, terminada por un 0 char final. Por lo que todos los siguientes son cadenas de C:
char string_one[] = { 'H', 'e', 'l', 'l', 'o', 0 };
char string_two[] = "Hello"; // trailing 0 is automagically inserted by the compiler
const char *string_three = "Hello";
Entonces, ¿las matrices y punteros son la misma cosa y ambos se pueden tratar como la C-string? – FrozenHeart
@NikitaTrophimov no, las matrices y los punteros no son lo mismo, pero en casos más simples, los punteros se pueden tratar como matrices y viceversa. Lea aquí: http://www.cs.bu.edu/teaching/cpp/string/array-vs-ptr/ –
Sé que los punteros y matrices realmente no son lo mismo. Quiero saber si hay alguna diferencia entre ellos en el significado de C-string – FrozenHeart
Un C-secuencia es una serie de caracteres que termina con un byte 0, también conocido como un null terminated string. Se puede acceder como una matriz (char[]
) o como un puntero al primer carácter (char *
).
En C++ hay otro tipo de cadena llamada std::string
que no necesita ser terminada por un byte 0. El término C-string a menudo es utilizado por los programadores de C++ cuando se refieren a una cadena terminada nula en lugar del tipo std::string
.
¿No es 'const char *'? – Mahesh
@Mahesh: No tiene que ser así. –
@Mahesh, es tan válido cambiar las cosas desmarcando un puntero (tal vez estés pasando de personaje en personaje y necesites cambiar algo). 'const char *' definitivamente debería usarse cuando se apunta a literales. Tal vez eso es lo que cruzó por tu mente? – chris
acuerdo con el estándar (C11 §7.1.1), una cadenaes una secuencia contigua de caracteres terminados por e incluyendo el primer carácter nulo, es decir una matriz de caracteres terminada por '\0'
.
- 1. C++ CString equivalente en C#
- 2. Convertir CString en const char *
- 3. patrones "call-cc" en Scala?
- 4. CString a char *
- 5. CString a conversión LPCTSTR
- 6. ¿Qué es call/cc?
- 7. Detalles de call/cc
- 8. PHP Mail, CC Field
- 9. Convertir MFC CString a entero
- 10. Cómo convertir nsstring a cString?
- 11. C++ LibCurl - Convirtiendo CURLcode en una CString
- 12. Convertir CString para flotar en mfc
- 13. ¿Convierte CString en matriz de caracteres?
- 14. ¿Cómo cambian DP y CC en Piet?
- 15. ¿Qué significa CC? = En un Makefile?
- 16. Continuación (call/cc) en el Esquema
- 17. En makefiles, ¿qué significan CC y LD?
- 18. Convertir CString a std :: wstring
- 19. Cómo prevenir C6284 al usar CString :: Formato?
- 20. UTF-8, CString y CFile? (C++, MFC)
- 21. Cómo hacer que CC-Tray funcione
- 22. Proceso de horquillas con CC .NET
- 23. Diferencia entre CC, gcc y g ++?
- 24. mountainlion abril compilar carente de 'CC'
- 25. ¿Cómo se convierte cstring a NSString?
- 26. ¿Se recomienda usar cstdio, cstring, cmath, etc. en C++?
- 27. ¿Cómo convierto un CString a un doble en C++?
- 28. Suprimir "fuente C vista, pero` CC 'indefinido "en automake?
- 29. GCC función fastcall definición
- 30. ¿Cuáles son los códigos tales como CC, LD y CC [M] de salida al compilar el kernel de Linux?
+1 este es un tema importante de entender, y muy pocas personas realmente se molestan en preguntar qué significa. –