C 여러 개의 단선 선언
한 줄에 여러 변수를 표시한다고 선언하면 어떻게 됩니까? 예를 들어,
int x, y, z;
모두 인트입니다.문제는 다음 문장에서 y와 z가 무엇인가 하는 것입니다.
int* x, y, z;
모두 인트 포인터입니까?
오직.x
int에 대한 포인터입니다.y
그리고.z
규칙적인 int 입니다.
이것은 몇몇 사람들을 흥분시키는 C 선언 구문의 한 측면입니다.C는 선언자의 개념을 사용하는데, 이 개념은 선언되는 사물의 이름과 함께 유형 지정자가 제공하지 않는 추가 유형 정보를 소개합니다.선언문에
int* x, y, z;
선언자들은.*x
,y
,그리고.z
(둘 중 하나를 쓸 수 있는 것은 C 구문의 실수입니다.int* x
아니면int *x
, 그리고 이 질문은 제가 두 번째 스타일을 사용하는 것을 추천하는 몇 가지 이유 중 하나입니다.)의 강도.x
,y
,그리고.z
형식 지정자에 의해 지정됩니다.int
, 의 지시에 의할 때에x
선언자에 의해 지정됩니다.*x
(IOW, 표현식)*x
활자가 있습니다int
).
세 개체를 모두 포인터로 사용하려면 두 가지 선택 사항이 있습니다.포인터로 명시적으로 선언할 수 있습니다.
int *x, *y, *z;
또는 int 포인터에 대한 typedef를 만들 수 있습니다.
typedef int *iptr;
iptr x, y, z;
포인터를 선언할 때,*
는 유형이 아닌 변수 이름의 일부입니다.
첫 문장에서:
int x, y, z;
그들은 모두int
s.
그러나 두번째 것에서는:
int* x, y, z;
오직.x
에 대한 포인터입니다.int
.y
그리고.z
훤칠한int
s.
만약 그들 모두가 그들을 위한 조언자가 되기를 원한다면,int
필요한 작업:
int *x, *y, *z;
x만 int 포인터입니다.Y랑 Z는 그냥 int.세 가지 포인터를 원하는 경우:
int * x, * y, * z;
C에서 선언은 사용법을 모방한다는 것을 아는 것이 중요합니다.* 단항 연산자는 C에서 우 연관성이 있습니다.그래서 예를 들면.int *x
x는 int (또는 int-star)에 대한 유형 포인터이며, inint x
, x는 int형입니다.
다른 사람들도 언급했듯이,int* x, y, z;
C 컴파일러는 x를 int-star로, y와 z를 정수로 선언합니다.
언급URL : https://stackoverflow.com/questions/3246804/c-multiple-single-line-declarations
'programing' 카테고리의 다른 글
MySQL - 가장 쉬운 방법으로 마지막으로 삽입한 행 선택 (0) | 2023.11.05 |
---|---|
gcc-Wall이 0-length 형식 문자열에 대한 경고를 주는 이유는 무엇입니까? (0) | 2023.11.05 |
C++의 NULL이 일반적으로 C와 같은 포인터가 아닌 정수 리터럴인 이유는 무엇입니까? (0) | 2023.11.05 |
array_intergect의 반대? (0) | 2023.11.05 |
독트린 2를 사용하여 테이블을 자르는 방법? (0) | 2023.11.05 |