stack heap
#include <stdio.h> // http://tcpschool.com/c/c_pointerArray_arrayPointer
// https://m.blog.naver.com/PostView.nhn?blogId=1stwook&logNo=30179823570&proxyReferer=https:%2F%2Fwww.google.com%2F https://m.blog.naver.com/1stwook/30179949040
int main()
{
int B1[2] = { 0xB000, 0xB001 };
printf("%x, %x\n\n", B1[0], B1[1]);
int* PTR_1D = B1;
printf("%p = %p, %x = %x, %p\n", B1, &B1, B1[0], *B1, &B1[0]);
printf("%p = %p\n", B1 + 1, &B1[1]);
printf("%x = %x\n", *B1, B1[0]);
printf("%p와 %p는 다르다.\n\n\n", *(B1 + 1), &B1[1]);
int B2[3][2] = {
{ 0xB000, 0xB001},
{ 0xB100, 0xB101 },
{ 0xB200,0xB201 }
};
printf("%x, %x\n", B2[0][0], B2[0][1]);
printf("%x, %x\n", B2[1][0], B2[1][1]); // https://www.geeksforgeeks.org/pointer-array-array-pointer/
printf("%x, %x\n", B2[2][0], B2[2][1]);
int(*PTR_2D)[2] = B2;
printf("%p = %p= %p = %p = %p = %p, %x = %x\n", B2, &B2, *B2, B2[0], &B2[0], &B2[0][0], B2[0][0], *B2[0]);
printf("%p = %p\n", B2 + 1, &B2[1]);
printf("%p = %p, %x\n", *B2, B2[0], B2[0][0]);
printf("%p = %p, %p\n", *(B2 + 1), &B2[1], &B2[1][0]);
int B4[2][2][3][2];
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 2; ++j) {
for (int k = 0; k < 3; ++k) {
for (int l = 0; l < 2; ++l) {
}
}
}
}
printf("%p = %p= %p = %p = %p = %p, %x = %x\n", B4, &B4, *B4, B4[0], &B4[0], &B4[0][0], B4[0][0], *B4[0]);
printf("%p = %p= %p = %p = %p = %p, %x = %x\n", B4[0], &B4[0], *B4[0], B4[0][0], &B4[0][0], &B4[0][0][0], B4[0][0][0], *B4[0][0]);
printf("%p = %p= %p = %p = %p = %p, %x = %x\n", B4[1], &B4[1], *B4[1], B4[1][0], &B4[1][0], &B4[1][0][0], B4[1][0][0], *B4[1][0]);
return 0;
}
#include <stdio.h>
#include <stdlib.h> //https://www.geeksforgeeks.org/dynamically-allocate-2d-array-c/
int main()
{
int r = 3, c = 4;
int* arr = (int*)malloc(r * c * sizeof(int));
*(arr + 0) = 12;
*(arr + 1) = 11;
*(arr + 2) = 10;
*(arr + 3) = 9;
*(arr + 4) = 8;
*(arr + 5) = 7;
*(arr + 6) = 6;
*(arr + 7) = 5;
*(arr + 8) = 4;
*(arr + 9) = 3;
*(arr + 10) = 2;
*(arr + 11) = 1;
printf("%p, %p, %d \n", &arr, arr, *arr);
printf(" %p, %d \n", (arr+0), *(arr+0)); //&(arr+0)는 에러
printf("==========\n\n");
int i, j, count = 0;
for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
printf("% d의 주소는 %p \n", *(arr + i * c + j), (arr + i * c + j));
printf("==========\n");
for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
*(arr + i * c + j) = ++count;
for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
printf("% d의 주소는 %p \n", *(arr + i * c + j), (arr + i * c + j));
printf("%p, %p, %d \n", arr, &arr, *arr);
return 0;
}
FREE
'languages > c, c++' 카테고리의 다른 글
6 (0) | 2021.04.26 |
---|---|
5 (0) | 2021.04.26 |
4 (0) | 2021.04.26 |
(학습 노트) 배열과 포인터 (0) | 2021.04.26 |
(학습 노트) C언어 포인터 (참조자, 포인터 기본개념), pass by value, pass by pointer, pass by reference in Korean (0) | 2021.04.26 |