는 컴파일러에게 함수의 존재, 반환 유형 및 매개 변수에 대해 알려줍니다. 함수의 실제 코드를 제공하지 않습니다. 반면에 정의 는 함수의 완전한 구현을 제공합니다 - 함수가 호출 될 때 실행될 코드는 다음과 같이 생각합니다. 이와 같이 생각하십시오 : 선언은 약속이지만, 정의는 그 약속의 이행입니다.
. 선언 . 컴파일러는 이제
라는 함수가 존재한다는 것을 알고 있으며, 정수 2 개를 입력으로 가져 가서 정수를 반환합니다. 두 번째 부분은 정의 입니다. 여기에는 추가를 수행하는 코드가 포함되어 있습니다. 선언의 중요성 : 선언은 모듈 식 프로그래밍에 중요합니다. 헤더 파일 (.h)에서 함수를 선언 한 다음 별도의 소스 파일 (.c)에서 정의 할 수 있습니다. 이를 통해 여러 소스 파일이 구현 세부 사항을 알 필요없이 동일한 기능을 사용할 수 있습니다. 선언이 없으면 컴파일러는 함수의 정의 전에 함수 호출에 직면하면 오류가 발생합니다. C 함수에서 인수를 올바르게 전달하고 수신하는 방법? <code class="c">// Declaration: Tells the compiler about the function 'add'
int add(int a, int b);
// Definition: Provides the actual implementation of the function 'add'
int add(int a, int b) {
return a + b;
}</code>
인수 전달 : 인수는 값별로 C 함수로 전달됩니다. 이것은 인수의 가치 사본이 생성되어 함수로 전달됨을 의미합니다. 함수 내에서 인수에 대한 모든 수정은 호출 함수의 원래 변수에 영향을 미치지 않습니다. 예 : add
원래 변수를 수정하려면 변수로 포인터를 통과해야합니다. 함수의 리턴 유형은 반환되는 값의 유형과 일치해야합니다. 함수가 값을 반환하지 않으면 리턴 유형이 . - 잘못된 인수 유형 : 잘못된 유형의 인수를 전달하면 예상치 못한 동작이나 컴파일 오류가 발생할 수 있습니다. 함수에 전달 된 인수 유형이 함수 정의의 매개 변수 유형과 일치하는지 확인하십시오. 타의 추종을 불허하는 반환 유형 :
함수의 반환 유형은 반환 된 값의 유형과 일치해야합니다. 이를 무시하면 경고 나 오류가 발생할 수 있습니다. - 메모리 누출 : 함수가 메모리를 동적으로 할당하는 경우 (, 등 사용) 더 이상 필요하지 않은 경우 를 사용하여 메모리를 해제하는 것이 중요합니다. 그렇게하지 않으면 메모리 누출이 발생합니다.
매달려있는 포인터 : 매달려있는 포인터가 해방 된 메모리 위치를 가리 킵니다. 매달려있는 포인터에 액세스하면 예측할 수없는 결과 또는 충돌이 발생할 수 있습니다. - 오프별 오류 : 배열 또는 루프로 작업 할 때 일반적입니다. 할당 된 범위 외부의 메모리에 액세스하지 않도록 배열 지수 및 루프 조건을주의 깊게 점검하십시오.
malloc
초기화되지 않은 변수 : calloc
비 초기 변수를 사용하면 예측할 수없는 동작이 발생할 수 있습니다. 변수를 사용하기 전에 항상 초기화하십시오. free
- 효과적으로 디버깅 :
컴파일러 경고 : 컴파일러 경고에 세심한주의를 기울이십시오. 그들은 종종 잠재적 인 문제를 가리 킵니다. - debuggers (GDB) : gdb와 같은 디버거를 사용하여 코드를 통과하고 변수를 검사하고 오류의 소스를 식별합니다.
인쇄 문의 인쇄물의 값을 인쇄하려면. 동작. 정적 분석 도구 :
정적 분석 도구를 사용하여 런타임 전에 잠재적 인 버그를 감지합니다. - 코드 검토 : 다른 프로그래머를 검토하여 누락했을 수있는 오류를 포착하기 위해 코드를 검토하십시오. 함수 :
반환 유형 : - 기능 정의는 리턴 유형을 지정해야합니다 (예를 들어, , , ). 밑줄). 각 매개 변수는 유형과 이름이 있어야합니다.
기능 본체 : int
기능 본체는 곱슬 브레이스로 둘러싸여 있으며 함수가 호출 될 때 실행될 코드가 포함되어 있습니다. 값. float
void
호출 함수 : - 기능 이름 :
기능 이름은 이름을 사용하여 호출됩니다. 인수의 번호와 유형은 함수 정의의 매개 변수와 일치해야합니다. - return 값 : 함수가 값을 반환하면 호출 코드는 반환 된 값을 변수에 할당하거나 표현식에서 직접 사용할 수 있습니다.