Werden "int8_t"-Arrays (aus stdint.h) nullterminiert?
-
Werden int8_t Arrays automatisch nullterminiert? Wie char-Arrays?
-
Zeig doch mal, wie du sie verwenden moechtest. Normalerweise werden nur Sachen in "..." automatisch nullterminiert.
-
knivil schrieb:
Zeig doch mal, wie du sie verwenden moechtest. Normalerweise werden nur Sachen in "..." automatisch nullterminiert.
ich dachte, weil ein char auch nur 1 byte groß ist, kann ich auch gleich int8_t nehmen, wo es sicher ist, dass es am ende 1 byte groß ist.
#include <stdint.h> int8_t array[]="-- string --";
Geht das überhaupt?
Ich hab das nicht ausprobiert, ich frage aus interesse.
-
int128_t schrieb:
knivil schrieb:
Zeig doch mal, wie du sie verwenden moechtest. Normalerweise werden nur Sachen in "..." automatisch nullterminiert.
ich dachte, weil ein char auch nur 1 byte groß ist, kann ich auch gleich int8_t nehmen, wo es sicher ist, dass es am ende 1 byte groß ist.
#include <stdint.h> int8_t array[]="-- string --";
Geht das überhaupt?
Ich hab das nicht ausprobiert, ich frage aus interesse.
Ja, das geht und das Array hat hinterher ein Null nach dem letzten '-', da auch das Literal
"-- string --"
eine (versteckte) Null an der Stelle hat. Man kann alle Arrays aus zu char kompatiblen Typen mit einem Zeichenkettenliteral initialisieren (und Arrays aus zu wchar_t kompatiblen Typen mit einem wchar_t Zeichenkettenliteral).Siehe C-Standard §6.7.8, insbesondere Klauseln 14 und 15 (C99).
-
char ist auch immer genau 1 Byte, das stellt der Standard sicher.
Und zu deinem Beispiel, bei mir geht das. Wird auch nullterminiert, da es ja ein string ist.
-
Nur um das mal klar zu stellen:
int8_t foo[] = {1,2,3}; // ist genau so wenig nullterminiert wie char bar[] = {'a', 'b' , 'c'};
Es gelten keine Sonderregeln (bzw. nur die normalen Sonderregeln für char), bloß weil man einen typedef für (signed/unsigned) char gemacht hat.
-
DarkShadow44 schrieb:
char ist auch immer genau 1 Byte, das stellt der Standard sicher.
Aber eben nicht 8 Bits, was er vermutlich meinte.
-
int128_t schrieb:
Werden int8_t Arrays automatisch nullterminiert? Wie char-Arrays?
char-Arrays werden nicht automatisch nullterminiert...
-
dot schrieb:
int128_t schrieb:
Werden int8_t Arrays automatisch nullterminiert? Wie char-Arrays?
char-Arrays werden nicht automatisch nullterminiert...
doch, manchmal schon.
bei der initialisierung :char zero_terminated_array[] = "abc";
-
Das ist aber nur so, weil
"abc"
nullterminiert ist. Siehe meinen vorherigen Beitrag.