1. int *np
- int형 포인터 변수로 4byte이고 int형 주소를 저장.
2. int **npp
- 2차원포인터 변수로 4byte이고 1차원 포인터 변수의 주소를 저장
3. int arr[3]
- int형 배열로 int 형 메모리 3개를 갖는 12 byte 메모리이다.
4. int arr[2][3]
- 2차원 배열
5. int *arr[3]
- int형 주소를 3개까지 저장하는 배열로 각 배열요소(arr[0] , arr[1] arr[2]) 가 int형 주소를 저장.
6. int (*arr)[3]
- arr은 포인터 변수로 4byte이며 2차원 배열과 같은 열의 개수가 [3]인 int형 배열의 시작주소를 저장하기 위해 사용된다. 포인터 변수이므로 4byte이다.
사용 예)
#include < stdio.h >
void main()
{
int arr2[2][3] = {{10,20,30}, {100,200,300}};
int (*arr)[3];
arr = arr2;
}
arr[0][0] ~ arr[1][2] 로 값 접근이 가능하다.
7. int (*arr)[2][3]
- arr은 3차원 배열의 주소를 저장하기 위한 포인터 변수로 행과 열의 개수가 [2][3]인 int형 3차원 배열의 주소를 저장한다. 포인터 변수이므로 4byte
사용 예)
#include<stdio.h>
void main()
{
int arr3[2][2][3]={{{10,20,30,{40,50,60}},{{70,80,90},{100,110,120}}};
int (*arr)[2][3];
arr = arr3;
}
arr[0][0][0] ~ arr[1][1][2]로 접근이 가능하다
8. int (*arr[2])[3]
- 같은 변수를 배열로 2개 선언한 것이다. 배열요수 (arr[0], arr[1])은 열의개수가 [3]인 int형 2차원 배열의 시작 주소등을 저장한다.
int iarr1[2][3] = {{21,22,23}, {24,25,26}};
int iarr2[3][3] = {{31,32,33}, {34,35,36}, {37,38,39}};
arr[0] = iarr1;
arr[1] = iarr2;
이렇게 해서
arr1[0][0][0] ~ arr[0][1][2] 까지 iarr1이되고
arr[1][0][0] ~ arr[1][2][2] 까지 iarr2가된다..
9. int *(*arr)[3] - 2차원 배열의 주소를 저장하는 포인터
int n1 = 10, n2=20,n3=30,n4=40,n5=50,n6=60,n7=70,n8=80,n9=90;
int *iarr1[2][3] = {{&n1,&n2,&n3}, ,{&n4,&n5,&n6};
int *iarr2[3][3] = {{&n1,&n2,&n3}, {&n4,&n5,&n6}, {&n7,&n8,&n9}};
int *(*arr)[3];
arr = iarr1; //여기서는 arr이 iarr1의 값에 *arr[0][0] ~ *arr[1][2]이렇게 접근가능..
arr = iarr2; //여기서는 arr이 iarr1의 값에 *arr[0][0] ~ *arr[2][2]이렇게 접근가능.. 배열은 주소를 저장하고있다.
10. int *func(); - int의 주소를 반환한다는 뜻..
#include<stdio.h>
int n =20;
int* func()
{
return &n;
}
void main()
{
int *np;
np = func();
printf("%d %d\n", n, *np);
}
11. int (*func)()
#include<stdio.h>
int function1()
{
puts("함수 1입니다.");
return 1;
}
int function2()
{
puts("함수 2입니다.");
return 2;
}
void main()
{
int (*func)();
func = function1;
printf("%d\n", func());
func = function 2;
printf("%d\n", func());
}
func는 포인터 변수로 4byte이며 함수의 주소를 저장한다.
12. int (*func[2])()
- 함수의 주소를 저장하는 배열로 크기가 2라서 8byte(정수형)이며, 각배열의 요소 func[0] func[1]는 함수의 주소를 저장한다.
#include<stdio.h>
int function1()
{
puts("함수 1입니다.");
return 1;
}
int function2()
{
puts("함수 2입니다.");
return 2;
}
void main()
{
int (*func[2])();
func[0] = function;
printf("%d\n",func[0]);
func[1] = function;
printf("%d\n", func[1]);
}
}
void main()
{
int *np;
np = func();
printf("%d %d\n", n, *np);
}
11. int (*func)()
#include<stdio.h>
int function1()
{
puts("함수 1입니다.");
return 1;
}
int function2()
{
puts("함수 2입니다.");
return 2;
}
void main()
{
int (*func)();
func = function1;
printf("%d\n", func());
func = function 2;
printf("%d\n", func());
}
func는 포인터 변수로 4byte이며 함수의 주소를 저장한다.
12. int (*func[2])()
- 함수의 주소를 저장하는 배열로 크기가 2라서 8byte(정수형)이며, 각배열의 요소 func[0] func[1]는 함수의 주소를 저장한다.
#include<stdio.h>
int function1()
{
puts("함수 1입니다.");
return 1;
}
int function2()
{
puts("함수 2입니다.");
return 2;
}
void main()
{
int (*func[2])();
func[0] = function;
printf("%d\n",func[0]);
func[1] = function;
printf("%d\n", func[1]);
}
'예전것 > 프로그래밍' 카테고리의 다른 글
매개 변수 2을(를) 'const char [29]'에서 'LPCWSTR'(으)로 변환할 수 없습니다. (0) | 2009.09.11 |
---|---|
배열과 포인터에 관한문제 (0) | 2009.06.25 |
포인터와 함수. (0) | 2009.06.23 |
C 포인터 와 scanf buf에 대해 (0) | 2009.06.23 |
C포인터와 little, big endian (0) | 2009.06.19 |