c언어 포인터 활용 예제

이 연습에서는 배열 표기법의 예를 포인터 산술 로 변환합니다. 그리고 이미지 픽셀 데이터를 직접 조작하는 방법을 보여줍니다. 그러나 이미지의 색상을 변경하는 방법은 다를 수 있습니다. 함수에서 포인터를 반환할 때 함수에 로컬이거나 함수 인수에 대한 포인터인 값을 가리키는 포인터를 반환하지 마십시오. 함수가 종료되면 로컬 변수에 대한 포인터가 유효하지 않게 됩니다. 위의 함수에서 반환된 값은 정적 변수를 가리킵니다. 동적으로 할당된 메모리에 포인터를 반환하는 것도 유효합니다. C는 배열과 포인터 모두에 동일한 구문을 사용할 수 있습니다. 이전 예제를 살펴보겠습니다: 포인터는 C에 입력됩니다. 포인터가 선언되면 포인터가 가리키는 데이터 형식이 기록됩니다. 다른 변수와 마찬가지로 호환되지 않는 형식의 값을 할당하려고 하면 오류가 발생합니다.

생각할 수 있듯이 포인터 산술은 연산자 + 및 -을 사용하여 주소증분 또는 감소를 사용합니다. 그러나 포인터를 증분하는 것은 포인터가 가리키는 데이터 형식의 다음 요소로 이동할 수 있도록 해당 값에 충분히 추가하는 것을 의미합니다. 예를 들어 포인터에 정수의 주소가 포함된 경우 해당 포인터에 포인터를 추가하면 4바이트를 건너뛰고 다음 정수를 가리킵니다. 데이터 형식이 더 큰 경우 증분은 포인터의 정확한 바이트 양을 증가시게 됩니다. 감소는 비슷한 방식으로 작동합니다. Null 포인터는 일반적으로 데이터의 끝 또는 오류 조건을 의미합니다. null 포인터를 다시 참조하면 일반적으로 프로그램 충돌 오류가 발생합니다. foo_ptrin에 대한 포인터로 선언됩니다.

우리는 foo를 가리키기 위해 초기화했습니다. 포인터는 페블 스마트 워치를 위해 작성된 소프트웨어에서 두드러지게 특징입니다. 당신은 지난 장에서 주어진 많은 프로젝트 연습에서 이것을 보았다. 예를 들어, 모든 페블 프로그램은 사용자와 상호 작용할 수 있도록 화면에 창이 필요합니다. 이 창은 다음과 같이 선언됩니다: 그러나 배열에 두 차원을 갖도록 선언하는 경우 두 차원의 포인터를 사용하는 것이 합리적입니다. 두 차원의 배열이 있는 경우 이를 “배열 배열”로 생각할 수 있습니다. 하나의 차원을 사용하면 해당 컬렉션의 전체 배열을 참조합니다.