#include <stdio.h>
void fun(char**);
int main()
{
char *argv[] = {"ab", "cd", "ef", "gh"};
fun(argv);
return 0;
}
void fun(char **p)
{
char *t;
t = (p+= sizeof(int))[-1];
printf("%s\n", t);
}
할당 t = (p + = sizeof (int)) [- 1]; .. 주어진 ans는 cd입니다.누군가가이 할당, 이중 포인터 및 출력을 설명 할 수 있습니까?
을 찾을 수 있습니다, 솔직한 조언 마일을 실행하는 것입니다. – NPE
p가 int의 크기만큼 증가하면, 바로 앞에있는 인덱스를 선택하여 역 참조됩니다. 프로그램이 실제로 음의 배열 인덱스를 수행 할 수 없기 때문에 이것은 기술적으로 정의되지 않은 동작입니다. –
물론 음수 인덱스를 사용할 수 있습니다. 음의 색인을 추가하면 유효한 포인터가됩니다. – gnasher729