値:
1. main.cのを
2. testarray.c
3がheader.hエラーは、私は3つのファイルだ
私はグローバル変数名を作成したいです'arrayTwoD'は2次元配列です。 'testarray.c'で配列を初期化し、値を 's'で埋めたいと思います。この関数は 'main.c'で呼び出されます。
は、ここに私のコードです:
headerfile.h
#include <stdio.h>
void iniTwoDArray();
/*global variable 2d array not sure im doing correctly or not*/
extern char *arrayTwoD[2][3];
testarray.c
#include "headerfile.h"
#include <stdio.h>
char *arrayTwoD[2][3];
void iniTwoDArray() {
/*not sure if this is a good way to set the values */
memset(arrayTwoD, 's', sizeof(arrayTwoD[0][0]) * 2 * 3);
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("%c", arrayTwoD[i][j]);
}
printf("\n");
}
}
main.cの
#include "headerfile.h"
int main() {
iniTwoDArray();
return 0;
}
testarray.cに、デバッグしている間、th下の行は、実行された後、「文字列の文字の読み込みエラー」を表示し続けます。エラーは以下のスクリーンショットに示されています。私はちょうどCを学び始めました。あなたが私に説明することができれば本当に感謝します。
memset(arrayTwoD, 's', sizeof(arrayTwoD[0][0]) * 2 * 3);
[2] [3]をちょうど何ができますか? 'char * array ... 'ではありません。 –
' char * arrayTwoD [2] [3];は '* char'の*ポインタ*の2次元配列です。 '*'を省略すると、 'char'の2次元配列になります。 –
'char * arrayTwoD [2] [3];'は、 'char * 'の2次元配列であり、' char'ではなく 'pointers *'のものです。星を気にする。 – alk