IT공부/C언어

12/31 난생처음 C 프로그래밍

공부하는 라라 2023. 12. 31. 11:34

chapter 10 포인터 기초 연습문제 

1. 시작주소, 크기, 해석

2. &참조연산자, *간접연산자

3.  8바이트,TYPE

4. 4,8

5. TYPE만큼 더

6. p+N

7. *p + 1

8. 2

9. 1,4,8

10.

void* Swap(int* p1, int* p2)
{
	int swap;
	swap = *p1;
	*p1 = *p2;
	*p2 = swap;
}
int main()
{
	int p1 = 1;
	int p2 = 2;

	Swap(&p1, &p2);
	printf("%d, %d", p1,p2 );
}

11.

void* MaxAddress(void* p1, void* p2)
{
	if (p1 > p2)
		return p1;
	else
		return p2;
}
int main()
{
	int* a = NULL;
	int* b = 10;
	printf("메모리주소 a: %p, b: %p\r\n", &a, &b);
	printf("메모리 주소가 더 큰 주소: %p" ,MaxAddress(&a, &b));
}

LAB 11-1 

내답:

int mystrlen(const char* str)
{
	int sum = 0;
	//문자열을 받아서 길이를 반환하는 함수
	for (int i = 0; ; i++)
	{
		
		if (str[i] == '\0')
		{
			break;
		}
		sum++;
	}
	printf("문자열의 길이: %d", sum);
}

해답: 오 훨씬 간단..하고..좋..다...

int mystrlen(const char* str)
{
	for (int i = 0; ; i++)
	{
		if (str[i] == '\0')
			return i;
	}
}

LAB 11-2

내답:

void Sort(int arr[], int count)// int* arr
{
	int temp;
	//배열 포인터로 뭘 할 수 있는데 
	for (int i = 0; i < count; i++)
	{
		for (int j = i+1; j < count; j++)
		{
			if (arr[i] > arr[j])
			{
				temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;
			}
		}
	}

}

int main()
{ 
	int arr[6] = { 3,2,6,9,1,8 };
	Sort(arr, 6);
	for (int i = 0; i < 6; i++)
	{
		printf("%d ", arr[i]);
	}
}

해답: 똑같음.. 헤헤