값 :
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 디버깅하는 동안, 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;
}
: 여기
내 코드입니다 , th 아래 줄은 실행 후 "문자열의 읽는 중 오류가 발생했습니다"라는 내용을 계속 표시합니다. 오류는 아래 스크린 샷에 표시됩니다. 나는 방금 C를 배우기 시작했는데, 당신이 내게 평신도 용어로 설명 할 수 있다면 정말로 감사 할 것입니다.memset(arrayTwoD, 's', sizeof(arrayTwoD[0][0]) * 2 * 3);
가'문자의 arrayTwoD해야하는데 memset 함수 (arrayTwoD, '의'는 sizeof (arrayTwoD))를 할 수있는 [2] [3]'? 'char * array ... '가 아니다. –
'char * arrayTwoD [2] [3];'은'char'에 대한 * 포인터 *의 2D 배열이다. '*'를 생략하면'char'의 2D 배열이됩니다. –
'char * arrayTwoD [2] [3];'는 char 배열이 아니며,'char'가 아니라'char'에 대한 포인터입니다. 별을 생각해. – alk