반응형

포인터 10

[C언어 무료 동영상 강의] 49. 간접 연산자 50. 인덱스 연산자

[C언어 무료 동영상 강의] 49. 간접 연산자50. 인덱스 연산자다루는 내용주소 연산자간접 연산자포인터 변수와 간접 연산자배열 이름과 간접 연산자인덱스 연산자피연산자가 포인터와 정수인 인덱스 연산자 피연산자가 배열 이름과 정수인 인덱스 연산자 앞으로 프로그래밍 관련 글은 새롭게 개설한 언제나 휴일 전용 사이트에서 만나보세요. 2017년 1월 1일까지 이 곳의 프로그래밍 자료는 http://ehpub.co.kr 로 옮길 예정입니다. 본문[디딤돌 C언어 ] 49. 간접 연산자 [디딤돌 C언어 ] 50. 인덱스 연산자

[C언어 무료 동영상 강의] 45. 배열과 포인터 개요 46. 배열 선언문

[C언어 무료 동영상 강의] 45. 배열과 포인터 개요 46. 배열 선언문다루는 내용 배열 포인터 배열 이름은 포인터 상수 배열 선언문 초기화한 배열의 원소 초기화하지 않은 배열의 원소 앞으로 프로그래밍 관련 글은 새롭게 개설한 언제나 휴일 전용 사이트에서 만나보세요. 2017년 1월 1일까지 이 곳의 프로그래밍 자료는 http://ehpub.co.kr 로 옮길 예정입니다. 본문45. 배열과 포인터 개요 46. 배열 선언문

[정답] 디딤돌 C언어 47. 포인터 + 정수

[정답] 47. 포인터 + 정수 ◈ 기본 연습 1. char 형식을 원소로 하는 포인터 변수 p를 선언하고 1000으로 초기화하세요. 그리고 p에 4를 더한 후에 p가 얼마인지 출력하세요. 답: 1004 char 형식의 크기는 1 바이트이므로 p+4를 하면 p에서 sizeof(char)*4를 더하므로 1004 //char 형식을 원소로 하는 포인터 변수 p를 선언하고 1000으로 초기화하세요. //그리고 p에 4를 더한 후에 p가 얼마인지 출력하세요. #include int main(void) { char *p = (char *)1000; printf("%d\n", p + 4); return 0; } 2. short 형식을 원소로 하는 포인터 변수 p를 선언하고 1000으로 초기화하세요. 그리고 p에 4..

[C언어 동영상 강의] 2. 형식(Type) 개요

[C언어 동영상 강의] 2. 형식(Type) 개요 2. 형식(Type) 개요기본 형식문자형식정수 형식실수 형식매커니즘 형식배열포인터사용자 정의 형식구조체공용체열거형기타 앞으로 프로그래밍 관련 글은 새롭게 개설한 언제나 휴일 전용 사이트에서 만나보세요. 2017년 1월 1일까지 이 곳의 프로그래밍 자료는 http://ehpub.co.kr 로 옮길 예정입니다.

50. 인덱스 연산자

C언어에서는 포인터와 정수 사이의 더하기 연산 후에 간접 연산을 수행하는 것을 간단하게 인덱스 연산으로 표현할 수 있어요. 인덱스 연산자는 배열 선언에 사용하는 지시 연산자 [ ]와 기호가 같아요. 선언문 이외에서 포인터와 정수가 피연산자인 이항 연산자 [ ]를 인덱스 연산자라 불러요. 인덱스 연산은 상대적 거리에 있는 원소를 접근할 수 있어요. 인덱스는 상대적 거리를 나타내기 때문에 n 번째 원소에 접근하려면 n-1을 사용해야 한답니다. int arr[3]={1,2,3}; int *p = arr; int index = 0; 위와 같이 배열과 포인터, 기본 형식을 선언하였을 때 arr[index]와 p[index]와 같이 사용하면 *(arr+index), *(p+index)와 같은 표현이예요. 인덱스 연..

49. 간접 연산자

피연산자로 포인터를 사용하는 더하기, 빼기 연산은 프로그램 메모리 주소를 계산하거나 상대적 거리를 계산하죠. 하지만 실제 개발자는 프로그램 메모리 주소를 아는 것은 큰 의미가 없어요. 개발자는 특정 프로그램 메모리 주소에 있는 값을 얻어오거나 설정하는 것을 원해요. C언어에서 포인터(배열 이름 포함)가 갖는 메모리 주소에 원하는 값을 설정하거나 얻어오는 방법은 크게 간접 연산자와 인덱스 연산자를 사용하는 방법이 있어요. 간접 연산자는 선언문이 아닌 코드 구문에서 포인터 형식을 피연산자로 오는 단항 연산자예요. 연산 기호는 포인터 변수를 선언할 때 사용한 지시 연산자 *와 같아요. 모양은 같지만 선언문에 있는 것은 선언한 변수가 포인터 형식임을 나타내는 지시 연산자예요. 간접 연산의 결과는 포인터 변수가 ..

48. 포인터와 - 연산

C 언어에서는 같은 원소의 포인터 사이의 - 연산을 제공하죠. 연산 결과는 정수 형식으로 두 포인터 사이의 원소 개수예요. 예를 들어 int 형식 변수 a의 값이 1016이고 int 형식 변수 b의 값이 1000일 때 a-b의 결과는 4랍니다. ◈ 포인터 형식 사이의 - 연산 #include int main() { int *a = (int *)1016; int *b = (int *)1000; printf("a:%d b:%d a-b:%d\n",a,b,a-b); return 0; } ◈ 실행 결과 a:1016 b:1000 a-b:4 ◈ 배열 이름과 포인터 형식 사이의 - 연산 #include int main() { int arr[10]; int *p = arr+4; printf("arr:%d p:%d p-a..

47. 포인터 + 정수

C 언어에서 배열 이름은 관리하는 메모리의 시작 주소를 의미하죠. 프로그램에서 배열 이름은 포인터 상수로 취급해요. 따라서 배열을 효과적으로 사용하려면 포인터 관련 연산자를 잘 사용할 수 있어야 겠죠. C 언어에서 + 연산에는 하나의 포인터 형식과 정수 형식을 피연산자가 오는 것을 허용해요. 이 때 연산 결과는 상대적 거리의 메모리 주소를 의미한답니다. 여기에서 말하는 상대적 거리는 예를 들어 알아볼게요. int 형식 원소의 포인터 변수의 값이 1000일 때 상대적 거리 4는 1000번지에서 int 형식 원소 4개 크기를 더한 주소예요. 즉 int 형식의 메모리 크기가 4바이트이므로 1000번지에서 상대적 거리 4는 1016이예요. 물론 여기서 1016은 정수 형식이 아니고 포인터 형식이랍니다. ◈ 포인..

45. 배열과 포인터 개요

C언어에서는 같은 형식의 여러 데이터를 효과적으로 사용할 수 있는 배열을 제공하고 있어요. C언어에서 제공하는 기본 형식들은 변수가 관리하는 데이터가 하나여서 변수 이름은 갖고 있는 값을 의미하죠. 하지만 배열은 관리하는 데이터가 여러 개이므로 배열 이름이 특정 값을 대표할 수 없어요. C언어에서는 배열 이름은 관리하는 특정 값이 아닌 배열에 할당한 메모리의 시작 주소를 의미한답니다. 배열의 원소에 접근할 때는 배열 이름과 상대적 거리를 의미하는 인덱스 값을 사용하는 것이 일반적이예요. 예를 들어 3번째 원소를 접근하려면 시작 위치에서 거리 2이므로 인덱스 2를 사용해요. 따라서 상대적 거리를 나타낼 때 첫 번째 원소는 상대적 거리가 0이므로 n번째 원소는 상대적 거리가 n-1임을 잊지 마세요. 또한 C..

반응형