c++ - C语言声明问题
阿神
阿神 2017-04-17 15:26:17
0
3
474

以下声明

#include<stdio.h>

int main()
 {
    char *(*s)[ ];
    return 0;   
}

为啥可以这样声明呢?
1.请问这样声明的指针指向的空间是?

阿神
阿神

闭关修行中......

모든 응답(3)
巴扎黑

char *(*s)[ ];우선순위로 (*s)를 먼저 읽어보세요. 포인터와 배열을 변환할 수 있으므로 (*s)s[]로 변환되므로 위 수식은 char *s[][];
로 변환할 수 있으며 먼저 s[][]가 무엇인지 판단합니다. 二维数组, 앞에 추가합니다. "" 기호는 각 요소가 char(예: 문자열)임을 나타냅니다.

한 가지 더, 안에 괄호가 없으면 다음과 같습니다. char **s[] 그러면 달라집니다. 우선순위에 따라 s는 먼저 s[]로 표현되는 아래 첨자 문자, 즉 一维数组과 결합된 다음, 배열의 요소가 다음과 같음을 나타내는 이전 두 개의 "*" 기호와 결합됩니다. 포인터에 대한 포인터.

阿神

s는 char 배열에 대한 포인터이거나 char*

에 대한 포인터입니다.
Ty80

@大达가족이 답변을 아주 잘 해주셨네요. "C 전문가 프로그래밍"에서 C의 설명을 설명하는 장을 마련했습니다. 이전에 "C 전문가 프로그래밍 노트"를 읽으면서 해당 내용을 읽어보실 수 있습니다. 1-3)

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿