私はあなたの助けが必要です! char文字列に格納されているデータのC構造体でが動作するのは、:char *name;
の1種類の宣言のみですが、char []name;
は機能しません。構造体Cの文字列
しかし、構造体を使用せずにコード内で文字列を宣言しようとすると、はすべてで動作します。コード例では、どのようなときにchar配列を宣言するか、両方の宣言型が機能します。
#include "funct.h"
#include "stdio.h"
//structure employee name and surname only works when using char* pointers
struct employee {
char *name;
char *surname;
};
int main() {
struct employee worker;
worker.name = "Robert";
worker.surname = "Woz";
printf("\n");
printf("%s", worker.name);
printf("\n");
printf("%s", worker.surname);
printf("\n");
char name[] = "Robert"; //declaration of array with using [] postfix
for (int i = 0; i < 7; i++) {
printf("%c", name[i]);
}
printf("\n");
char *surname = "Woz"; //declaration of array wit using char* pointer
for (int i = 0; i < 4; i++) {
printf("%c", surname[i]);
}
printf("\n");
return (0);
}
プログラムの出力:すべての
Robert
Woz
Robert
Woz
CまたはC++? 1つを選択します。 –
'char * surname'は配列を宣言しません。ポインタを宣言します。 – melpomene
'char * surname =" Woz ";'静的寿命の文字列リテラルを作成し、それを指すために 'surname'を割り当てます。 '' char name [] = "Robert"; 'スコープされた有効期間の文字配列を作成し、配列はポインタ_と同じではないので、配列にはいくつかの余分な情報があります。それが指している多くの記憶。 – George