c언어 포인터 배열 함수 예제

  • 0

c언어 포인터 배열 함수 예제

배열 이름만 배열의 기본 주소와 동일하기 때문입니다. 잘못된 메모리 위치를 가리키는 포인터를 역참조할 때 오류가 발생하여 프로그램이 종료되는 경우가 많습니다. 이 오류는 종종 세분화 오류로 보고됩니다. 이 것의 일반적인 원인은 포인터를 디레참조하려고 하기 전에 포인터를 초기화하지 못하는 것입니다. 내 이유가 올바르지 않은 경우 (나는 믿는 것), val이 2D 배열인 „&val[0]”과 „val[0]”의 차이점을 설명하십시오 함수 점프 테이블의 네 번째 응용 프로그램은 인터럽트 벡터의 배열입니다. 대부분의 프로세서에서 인터럽트 벡터는 연속 된 위치에 있으며 각 벡터는 인터럽트 서비스 루틴 함수에 대한 포인터를 나타냅니다. 컴파일러에 따라 작업이 암시적으로 수행되거나 함수 테이블을 생성해야 할 수 있습니다. 후자의 경우 switch 문을 통해 벡터를 구현하는 것은 작동하지 않습니다! 참고 사항: 1) 배열이 있는 포인터를 사용하는 동안 포인터의 데이터 형식은 배열의 데이터 형식과 일치해야 합니다. 2) 당신은 또한 다음과 같은 포인터를 초기화하기 위해 배열 이름을 사용할 수 있습니다 : 포인터 논리 당신은 몇 포인터 산술 및 식으로 재생하는 시간이 그래서 위의 코드에서 논리를 이해해야합니다.

bb->m_aNumber 표현식은 (*bb).m_aNumber와 완전히 동일합니다. 둘 다 m_aNumber bb로 가리키는 구조의 요소에 액세스합니다. 다음 섹션에서 설명할 포인터를 다시 참조하는 한 가지 방법이 있습니다. 위의 코드는 매우 간단합니다. 상수 문자열 read_str가 정의됩니다. read_str에는 모든 법적 니모닉 조합 목록이 포함되어 있습니다. 선명도를 돕기 위해 추가된 공백을 사용합니다. 다음으로, 함수 포인터의 배열, 각 유효한 명령에 대 한 하나의 포인터. 표준 라이브러리 함수 strstr()를 사용하여 유효한 명령 시퀀스가 있는지 확인합니다. 일치하는 일치 가 발견 되면 일치 하는 하위 문자열에 대 한 포인터를 반환 합니다., 그렇지 않으면 NULL을 반환 합니다.

유효한 포인터를 확인하고 오프셋을 문자열로 계산한 다음 오프셋을 사용하여 jump 테이블에서 적절한 처리기 함수를 호출합니다. 따라서 네 줄의 코드에서 명령이 유효한지 결정하고 적절한 함수를 호출했습니다. readfns[] 선언은 복잡하지만 런타임 코드의 단순성은 이길 수 없습니다. sizeof 연산자는 종종 동일한 함수에서 앞에서 선언된 정적 배열의 크기를 참조하는 데 사용됩니다. 예를 들어 다음 프로그램은 두 개의 값을 교환합니다: 무한 루프는 0이 아닌 틱 값을 확인하고, 틱 변수를 감소시키고, 프로그램이 실행되기 시작한 이후 경과 시간을 계산합니다. 그런 다음 코드는 각 작업을 단계별로 단계별로 수행하여 해당 작업을 실행할 시간인지 확인하고, 이 경우 함수 포인터를 통해 호출합니다. typedefs에서 일관된 명명 규칙이 사용됩니다. 모든 형식은 PF(함수에 대한 포인터)로 시작하여 반환 형식다음에 밑줄, 첫 번째 매개 변수 형식, 밑줄, 두 번째 매개 변수 유형 등이 옵니다. 보이드, 부울, 문자, int, 긴, 플로트 및 더블, 문자 V, B, C, I, L, S, D가 사용됩니다.

(F(unction)와의 혼동을 피하기 위해 부동 부동에 S(ingle)를 사용합니다. 데이터 형식에 대한 포인터의 경우 형식앞에 P가 옵니다. 따라서 PL은 긴 포인터입니다. 매개 변수가 const인 경우 c가 적절한 위치에 나타납니다.