C프로그래밍-배열과 포인터에 관해서
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

C프로그래밍-배열과 포인터에 관해서에 대한 보고서 자료입니다.

목차

<배열>
[배열 응용]

<결과>
<포인터>
[포인터 응용]

<실행>

<결과>

본문내용

ude
void main()
{
int nArray[9] = {84,43,64,6,3,18,92,77,24};
int nMax = nArray[0];
int nMin = nArray[0];
for(int i =0; i< 9; i++)
{
if(nArray[i] > nMax) nMax = nArray[i];
if(nArray[i] < nMin) nMin = nArray[i];
}
printf("\n최소 : %d, 최대 : %d \n", nMin, nMax);
}
<결과>
-최소 3, 최대 92
<포인터>
-포인터의 간단한 요점으로는 포인터 형을 선언할 때는 *을 사용한다. 포인터의 형은 포인터의 연산시 데이터 형의 크기만큼 이동한다. 동적 메모리 할당은malloc함수를 이용하여 메모리를 할당하고 할당된 메모리를 포인터가 가르킨다.
포인터란 메모리의 주소 값을 저장하기 위한 변수이다.
즉, 포인터는 기본 자료형 변수와 달리 메모리 공간의 주소 값을 저장하는데 사용되는 변수를 말하는 것이다. 그래서 흔히 포인터가 변수라는 것을 강조하기 위해서 ‘포인터 변수’라는
표현을 쓴다. 많은 사람들이 포인터와 포인터 변수를 다른 것으로 이해하는데 포인터와 포인터 변수는 같은 것이다.
포인터 선언은 다음과 같이 할 수 있다.
void main()
{
int *a;
char *b;
double *c;
포인터를 선언할 때에는 *연산자를 사용한다.
a는 int형 포인터를 선언하고 b는 char형 포인터를 c는 double형 포인터를 선언하고 있다.
여기서 포인터에도 타입이 존재한다는 것을 알 수 있다.
변수의 이름 앞에 &연산자를 붙이게 되면 해당 변수의 주소 값이 반환된다.
void main()
{
int a=2005;
int* pA=&a;
대입 연산자 오른쪽에 있는 문장 “&a”는 "변수 a의 주소 값을 반환하라“는 의미를 지닌다.
int a,
*pA;
위는 int형 변수 a와, int형 포인터 변수 pA의 선언되었는데 위와 같이 일반 변수와 포인터 변수를 동시에 선언 하는 것도 가능하다.
#include
void main()
{
int a=10;
int *pA=&a;
double e=3.14;
double *pE=&e;
printf("%d %f", *pA, *pE);
}
위에서 pA라는 포인터가 int형 포인터이기 때문에 4바이트를 읽어 들이고, pE라는 포인터는 double형이기 때문에 8바이트를 읽어 들인다. 즉, 포인터에 타입이라는 것이 존재하지 않는다면, 포인터를 이용해서 변수를 참조하는 경우 몇 바이트를 읽어 들여야 할 지 알 수 없게 된다. 즉, 포인터는 메모리를 참조하는 방법을 알려주는 역할을 한다.
포인터는 메모리의 주소 값을 나타내므로, 사용하는데 있어서 상당한 주의를 요구한다.
다음 소스는 잘못된 포인터 사용의 예 이다.
void main()
{
int *pA;
*pA=10;
}
위는 pA라는 포인터 변수를 선언만 하고 초기화 하지 않았다. 즉 pA값은 쓰레기 값으로 초기화된다 pA라는 포인터가 가리키는 메모리 공간에 10이라는 정수 값을 대입하고 있다. 그러므로 이 소스는 오류를 지니고 있다.
비슷한 다른 예를 들면,
void main()
{
int* pA=100;
*pA=10;
}
포인터는 가급적 선언과 동시에 초기화를 시켜주면 좋다고 해서 위와 같이 초기화를 하면 더 망치고 만다. 결국 포인터는 특성상 위험의 요소를 지닐 수밖에 없다.
[포인터 응용]
포인터를 이용한 두 정수의 최소 공약수 최대 공배수를 구하는 소스
#include
int gcd(int*, int*);
int lcm(int*, int*);
void main()
{
int a, b, val_gcd, val_lcm;
printf("두 정수를 입력하시오 : ");
scanf("%d %d", &a, &b);
val_gcd = gcd(&a, &b);
val_lcm = lcm(&a, &b);
printf("GCD : %d \nLCM : %d \n", val_gcd, val_lcm);
}
int gcd(int *x, int *y)
{
int temp = *x % *y;
if(temp == 0){
return *y;
}
return gcd(y,&temp);
}
int lcm(int *x, int *y)
{
return (*x) * (*y) / gcd(x,y);
}
<실행>
-두 정수의 입력이 18, 42
<결과>
-최소:6 최대:126

키워드

배열,   문자배열,   변수,   선언,   문자열
  • 가격2,000
  • 페이지수9페이지
  • 등록일2008.03.31
  • 저작시기2008.1
  • 파일형식한글(hwp)
  • 자료번호#458955
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니