C 입문 - 긱스포긱스 C Functions

조해빈·2023년 4월 1일
0

C

목록 보기
1/7

C 입문 - 긱스포긱스 C Functions

https://www.geeksforgeeks.org/c-language-2-gq/functions-gq/

퀴즈를 풀기 전 제가 c를 공부한 내용은 해당 깃에 올라가 있습니다.
https://github.com/h-b-cho/CBasic.git

1


매개 변수가 함수에 전달되면 함수에 전달되기 전에 모든 매개 변수의 값이 평가됩니다. 매개 변수 평가 순서는 무엇입니까? - 왼쪽에서 오른쪽으로 또는 오른쪽에서 왼쪽으로?

평가 순서가 왼쪽에서 오른쪽으로 정렬된 경우, 출력이 567이어야 합니다. 그러나 평가 순서가 오른쪽에서 왼쪽으로 정렬된 경우, 출력이 765여야 합니다.

유감스럽게도, C 표준에 의해 정의된 정해진 순서는 없습니다. 컴파일러는 왼쪽에서 오른쪽으로 평가하도록 선택할 수 있습니다. 따라서 출력은 컴파일러에 의존합니다.

답을 5 6 7라고 생각하기 쉬우나 C 언어의 경우 컴파일러를 많이 탄다. vscode의 c/c++ 기준으로 내 맥에서는 5 6 7의 결과가 나온다.

2

C에서 함수 모수는 항상 값으로 전달됩니다. 참조별 전달은 포인터 값을 명시적으로 전달하여 C에서 시뮬레이션됩니다.

3

C에서 함수는 배열과 함수를 제외한 모든 유형을 반환할 수 있습니다. 포인터를 배열로 반환하거나 포인터를 기능으로 반환하여 이러한 제한을 피할 수 있습니다.

4


설명: 함수의 이름은 실제로 함수에 대한 포인터 변수이며 함수의 주소를 인쇄합니다. 기호 테이블은 다음과 같이 구현됩니다.

struct
{
   char *name;
   int (*funcptr)();
}
symtab[] = {
   "func", func,
   "anotherfunc", anotherfunc,
};

6

c에서 연속적인 점들은 함수의 변수 인수의 개수인 타원으로 알려져 있습니다. 매개 변수에 대한 값이 하나씩 할당됩니다.

7

이것은 함수 포인터가 있는 간단한 프로그램입니다. fun는 데모를 가리키는 데 할당됩니다. 그래서 "(* fun);"과 "fun();"이라는 두 문장은 같은 의미입니다.

16

f1(a, b)에 대한 함수 호출은 값에 의해 전달되므로 영향을 받지 않습니다. 함수 호출 f2(&b, &c)는 b와 c의 값을 바꿉니다.
---> b은 6이 되고 c는 5가 됩니다. c-a-b의 값은 -5인 5-4-6이 됩니다.
.
.
.
.
.

profile
UE5 공부하는 블로그로 거처를 옮겼습니다!

0개의 댓글