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