C언어

C언어 포인터 기초, 포인터 연산

blockjane 2023. 9. 20. 18:05
728x90
반응형
SMALL

포인터란 데이터 주소를 말한다.

변수의 이름은 바뀔 수 있지만 주소는 그대로이다. 그게 포인터이다.

 

#include <stdio.h>
#pragma warning(disable:4996)

int main(void)
{
	//포인터 연산

	int val = 10;
	int* p1 = &val;
	int arr[6] = { 66,11,44,88,99,56 };

	printf("1.%d\n", val);  //Val의 값
	printf("2.%d\n", &val); //val의 주소
	printf("3.%d\n", p1);   //val의 주소
	printf("4.%d\n", *p1);  //val의 값
	printf("5.%d\n", arr);     //배열의 첫번째 값 주소
	printf("5-1.%d\n", arr[1]);     //배열의 두번째 값
	printf("6.%d\n", &arr[0]); //배열의 첫번째 값 주소
	printf("7.%d\n", arr + 1);   //배열의 두번째 값 주소
	printf("8.%d\n", *arr);    //배열의 첫번째 값
	printf("9.%d\n", *(arr + 1));   //배열의 두번째 값
	printf("10.%d\n", *arr + 1);   //배열의 첫번째 값 +1

	*arr = 100;
	printf("%d\n", arr);
	printf("%d\n", arr[0]);


	return 0;
}
/////////////////////////////////////////////////////////////////


#include <stdio.h>
#pragma warning(disable:4996)
void test(int* data,int dataSize);

int main(void)
{
	//포인터 연산

	
	int arr[5] = { 66,11,44,88,99 };
	test(arr,sizeof(arr)/sizeof(int));
	

	return 0;
}
void test(int* data,int dataSize)
{

	for (int i = 0; i < dataSize; i++)
	{
		printf("%d ", *(data + i));
	}

	
}

포인터 에디트

#include <stdio.h>
#pragma warning(disable:4996)

int valueedit(int x)
{
	x = x + 10;
	return x;
}

void valPEdit(int* x)
{
	*x = *x + 10;
}


int main(void)
{
	int val = 10;
	int* p = &val;
	printf("%d \n", val);
	val = valueedit(val);
	printf("%d \n", val);
	val = 10;
	printf("%d \n", val);
	valPEdit(p);
	printf("%d \n", val);

	return 0;
}
728x90
반응형
LIST