티스토리 뷰
포인터란 주소값의 저장을 목적으로 선언된다.
자료형 *포인터변수명;
으로 선언된다.
포인터의 자료형은 메모리공간을 참조하는(=접근하는) 기준이 된다.
즉 int형의 포인터인경우 4바이트만 접근 가능하다.
포인터는 주소값을 저장하기 때문에 &연산자로 얻어온 주소값을 저장하거나,
배열의 시작주소(=배열명) 을 저장하여 접근 가능하다.
*(p+2): p번지+2
*p+2 : p번지의 내용에 +2
괄호의 사용에 주의한다.
ex)
void main(){
int arr[3]={1,2,3};
int *p = arr;
for( int i=0; i<3; i++){
printf("%d, ", *(p+i)); //p+i가 가리키는 값 즉 arr[i]와 같다.
}
}
포인터는 함수의 인자로 받는것도 가능하다.
값을 전달하는 형태의 함수호출을 call by value라고 하며
주소를 전달하는 형태의 함수호출을 call by reference라고 한다.
ex)
void main()
{
char a;
int b;
float c;
InputData(&a,&b,&c);//call by reference
OutputData(a,b,c);//call by value
}
void InputData(char *p1, int *p2, float *p3)
{
scanf("%c", p1);
scanf("%d", p2);
scanf("%f", p3);
}
void OutputData(char n1, int n2, float n3)//call by value방식 반환
{
printf("%c, %d, %f", n1, n2, n3);
}
void OutputData(char *p_n1, int *p_n2, float *p_n3)// call by reference 방식 반환
{
printf("%c, %d, %f", n1, n2, n3);
}
/////////////////////////////////////////////////////////////////////////////////////////////////
이중 포인터
int temp=30;
int *p = &temp;//포인터 p에 temp 주소값 저장
int **p2 = &p;//pp p2에 p의 주소값 저장
printf("%d, %d\n", &p, p2); //p의주소, p2의 값 출력
printf("%d,%d,%d\n", &temp, p, *p2);
printf("%d, %d, %d\n", temp, *p, **p2);
**p2 = 100;
printf("%d,%d,%d\n", temp, *p, **p2);
- Total
- Today
- Yesterday
- spring error #
- Spring
- poi 엑셀
- JSON
- mybatis
- 정규식 숫자만
- poi
- JSON날짜
- 계좌번호정규식
- js
- jQuery
- 이메일 정규식
- ''찾기
- IntelliJ #gradle #tomcat #spring #springmvc
- SpringXmlModelInspection
- 공백찾기
- spring 엑셀
- Failed to load resource: the server responded with a status of 404 (Not Found)
- JSON파싱
- no getter for property named
- 정규식 한글만
- POI EXCEL
- PageNotFound - No mapping for GET
- 정규식 특수문자
- Regex
- selectbox
- 엑셀다운로드
- select제어
- 정규식
- 인텔리제이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |