# 크기가 3인 double형 배열의 모든 원소의 주소를 출력하는 프로그램을 작성하시오. 단, 주소 구하기 연산자를 사용하지 마시오.
*배열 이름을 포인터인 것처럼 이용하면 주소 구하기 연산자 없이도 배열 원소의 주소를 구할 수 있다.
*double 배열의 각 원소의 주소가 8바이트씩 차이 나는지 확인한다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
double arr[3] = { 1.1,2.2,3.3 };
double* parr = arr;
for (int i = 0; i < 3; i++)
printf("arr[%d]의 주소: %p\n", i, arr + i);
return 0;
}
# 배열 원소를 가리키는 포인터와 포인터 연산을 이용해서 실수형 배열의 모든 원소를 출력하는 프로그램을 작성하시오. 실수형 배열은 크기가 10이고 값은 마음대로 지정해서 사용해도 된다.
int main(void)
{
double arr[10] = { 0.1,2.0,3.4,5.2,4.5,7.8,9.7,1.4,6.6,7.2 };
double* parr = arr;
for (int i = 0; i < 10; i++)
{
//printf("%.2f ", parr[i]); 방법1
printf("%.2f ", *(parr + i)); //방법2
//printf("%.2f ", *parr); 방법3 세트
//parr++; 방법3 세트
}
return 0;
}
# 배열 원소를 가리키는 포인터가 배열의 첫 번째 원소를 가리킬 때 포인터 연산을 이용해서 정수형 배열의 모든 원소를 순서대로 출력한다. 그다음, 포인터가 배열의 마지막 원소를 가리키게 하고, 배열의 원소를 역순으로 출력하는 프로그램을 작성하시오. 정수형 배열은 크기가 10이고 마음대로 초기화해서 사용해도 된다.
int main(void)
{
int arr[10] = { 11,22,33,44,55,66,77,88,99,110 };
int* parr = &arr[0];
printf("배열: ");
for (int i = 0; i < 10; i++)
{
printf("%d ", *(parr + i));
}
printf("\n역순: ");
for (int i = 9; i >= 0; i--)
{
printf("%d ", *(parr + i));
}
//역순의 두번째 방법
//parr = &arr[9];
//for (int i = 0; i < 10; i++)
//{
// printf("%d ", *parr);
// parr--;
//}
return 0;
}
# 배열 원소를 가리키는 포인터를 이용해서 실수형 배열의 평균을 구하는 프로그램을 작성하시오. 실수형 배열은 크기가 10이고 마음대로 초기화해서 사용해도 된다.
int main(void)
{
double arr[10] = { 0.1,2.0,3.4,5.2,4.5,7.8,9.7,1.4,6.6,7.2 };
double* parr = &arr[0];
double average = 0;;
printf("배열: ");
for (int i = 0; i < 10; i++)
{
printf("%.2f ", parr[i]);
average += parr[i];
}
average = average / 10;
printf("\n평균: %f", average);
return 0;
}
'💻 Dev > C' 카테고리의 다른 글
[C]포인터 예제 문제 - 2 (2) | 2020.06.30 |
---|