저는 최근에 C에서 프로그래밍에 관한 코드를 연구했습니다. 2 차원 문자열과 포인터를 다루는 동안 나는 여기에서 붙어 있습니다. 또한 printf(), putchar() 및 puts() 함수는 혼란 스럽습니다! 다음 코드로 나를 도와주세요 : 나는 (ptr+1)
가 puts
에 대한 오류를 제공하는 동안 printf
에 대한 *(ptr+1)
및 (ptr+1)
모두 일을 할 이유를 알고 싶어C 문자열, 포인터, 퍼츠
#include<stdio.h>
int main()
{
char wer[3][4]= {"bag", "let", "bud"};
char (*ptr)[4]=wer;
printf("%d %d %d\n",ptr, ptr+1, ptr+1); // points to bag, let and bud respectively
printf("%d %d %d\n",wer, wer+1, wer+1); // points to bag, let and bud respectively
printf("%d %d %d\n", (*ptr), (*ptr+1), (*ptr +2)); // points to b,a,g respectively
printf("%s\n",*(ptr+1)); //prints let
printf("%s\n", (ptr+1)); //prints let
printf("%s\n", (*ptr +1)); //prints ag
puts(*(ptr+1)); //prints let
//puts((ptr+1)); //gives error
puts((*ptr+1)); //prints ag
putchar(**(ptr+1));//prints l
putchar(*(*ptr +1));//prints a
return 0;
}
. 또한 putchar
은 정수 인수를가집니다. 왜 우리는 여기에 이중 포인터를 사용합니까?
'% p'를 사용하여 포인터를 출력하십시오 –
또한, 매뉴얼 페이지를 다시 읽고 제공된 데이터 유형을 다시 확인하도록 요청합니다. :) –
"오류가 발생했습니다": 어떤 오류가 발생 했습니까? –