첫 번째 질문은 여기에 있습니다. 2D 배열 대신 포인터 배열을 사용하고 있습니다. 이제 요소를 표시하려면 * (arr [i] + j)를 사용할 수 있습니다. 여기서 arr은 배열이고 i는 행을 나타내며 j는 열을 나타냅니다. 그러나 동일한 표기법을 사용하는 요소에 값을 할당하려고하면 코드가 작동을 멈 춥니 다. 컴파일 오류가 발생하지 않지만 실행하면 작동이 멈 춥니 다. 아무도 나를 도울 수 있습니까?포인터 배열 사용
여기에 내 코드
당신은 문자열 리터럴을 수정하려고#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
int i,j,k;
char temp2, temp, *arr[] = {
"Brinda Roy",
"Rakesh Bai",
"Neha Saxen",
"Ankit Jain"};
printf("%c",*(arr[3]+8));
for(i=0;i<4;i++){
for(j=0, k=9; j<=4, k>=5; j++, k--){
temp =*(arr[i]+j);
*(arr[i]+j)=*(arr[i]+k);
*(arr[i]+k)=temp;
}
}
printf("\nThe array is ");
for(i=0; i<4; i++){
printf("\n%s",arr[i]);
}
getch();
return 0;
}
디버거를 열고 문제가 발생하면 카운터의 값을 검사하십시오. 문제가 무엇인지는 매우 분명하게 알 수 있습니다. –
포인터 배열은 2D 배열입니다. 'arr [i]'는'* (arr + i)'와 같습니다. – Trevor
오류가 세그먼트 오류 오류 일 수 있습니다. 즉 배열이 어딘가에 경계를 벗어 났음을 의미합니다. 일반적으로 포인터로 놀 때 발생합니다. 코드 디버깅을 시도하십시오. – ppsreejith