코딩/C언어

포인터 와 배열 (1~4)

tree0505 2025. 7. 9. 09:48
반응형
    • _21_교재

  • 수업023_포인터와배열.cpp
#include <stdio.h>

int main(void) {

	int i;
	int a[] = { 10, 20, 30, 40, 50, 60, 70, 80 , 90, 100 };
	//40바이트 

	int* ptr = a + 3;
	//배열로 3칸 / int라서 13 / 배열로는 3번 

	printf("%d\n", *ptr); //40 
	printf("%d\n", *ptr + 1); //40 + 1 
	printf("%p\n", ptr); //x13 
	printf("%p\n", ptr + 1); //x17 
	printf("%p\n", ptr - 3); //x1
	printf("%p\n", ptr + 1 - 3); // x5
	printf("%d\n", *ptr + 1); //41 
	printf("%d\n", *(ptr + 1)); //x5의 값. 50 
	printf("%d\n", *ptr + 1 - 3); //38 
	printf("%d\n", *(ptr + 1) - 3); //50 - 3 = 47 
	
	return 0;
}


  • 수업023_포인터와배열02.cpp
#include <stdio.h>

int main(void) {

	int a[4] = {10, 20, 30}; //10, 20, 30 0 

	int *p = a; // p는 arr[0] 의주소 //p = x1 

	printf("a[0]=%d, a[1]=%d, a[2]=%d, a[3]=%d\n", a[0], a[1], a[2], a[3]);
	
	p++; // p는 arr[1] 의 주소 //x5 
	
	printf("a[0]=%d, a[1]=%d, a[2]=%d, a[3]=%d\n", a[0], a[1], a[2], a[3]);
	
	*p++ = 100; // p는 20을 100으로 변경후 arr[2]의 주소로 이동
	//연산자가 3개. 
	//우선순위 | 1*  | 3 ++ | 2= 
	//10, 100, 30, 0 // p=> x9

	printf("a[0]=%d, a[1]=%d, a[2]=%d, a[3]=%d\n", a[0], a[1], a[2], a[3]);
	
	*++p = 200; // p는 arr[3]의주소로이동후 arr[3]을 200으로변경
	//우선순위 //  ++ , * , = // x13의 값에 200저장 
	//10, 100,30,200

	printf("a[0]=%d, a[1]=%d, a[2]=%d, a[3]=%d\n", a[0], a[1], a[2], a[3]);
	
	return 0;
}

  • _21_문제

  • 문제023_포인터와배열.cpp
#include <stdio.h>

int main(void) {

	int i;
	int a[] = { 10, 20, 30, 40, 50, 60, 70, 80 , 90, 100 };
	int* ptr = a + 3; //x13 
	for (i = 0; i < 5; i++) {
		printf("%d ", *(ptr + i) - 3); //37, 47,57,67,77
	}
	return 0;
}

  • 문제023_포인터와배열02.cpp
#include <stdio.h>

int main(void) {

	int i;
	int a[] = {1, 2, 4, 8};
	int* p = a; //x1
	p[1] = 3; // 1, 3, 4, 8 
	a[1] = 4; // 1, 4, 4, 8 
	p[2] = 5; // 1, 4, 5, 8 

	// 1 4 5 8

	//8, 10 
	printf("%d %d \n", a[1] + p[1], a[2] + p[2]);
	return 0;
}

  • 문제023_포인터와배열03.cpp
#include <stdio.h>

int main(void) {

	int a[4] = {10, 20, 30}; //10,20,30,0
	int *p = a; //x1
	p++; 		//x5 
	*p++ = 100; //10,100,30,0 // x9
	*++p = 200; //x13 //10,100,30,200
	printf("a[0]=%d, a[1]=%d, a[2]=%d, a[3]=%d\n", a[0], a[1], a[2], a[3]);
	return 0;
}

  • 문제023_포인터와배열04.cpp
#include <stdio.h>

int main(void) {

	int arr[] = {8, 5, 3, 1, 2, 7, 9};
	
	int *p = arr + 2, a = 0, b = 0;

	//p = x9

	a = *++p; //x13의 값을 a에 넣어라. //a = 1 

	b = (*p)++; //b = 1, p => x17 

	printf("%d, %d\n", a, b); //1
		
	return 0;
}

  • 문제023_포인터와배열05.cpp
#include <stdio.h>

int main(void) {

	int a[4] = {1, 2, 3}; //1 , 2 , 3 , 0 
	int*p = a; //x1 
	
	p++; // x5 
	*p++ = 10; //1, 10, 30, 0 //p = x9
	*p += 10; //1,10,13,0
	 
	printf("%d, %d, %d\n", a[0], a[1], a[2]); //1,10,13
		
	return 0;
}

  • 문제023_포인터와배열06.cpp
반응형