&buf_one[0] == buf_two+0
https://www.onlinegdb.com/online_c_compiler#
Online C Compiler - online editor
OnlineGDB is online IDE with c compiler. Quick and easy way to compile c program online. It supports gcc compiler for c.
www.onlinegdb.com
온라인 C 컴파일러로 아래 코드를 실행해보면,
#include <stdio.h>
#include <stdint.h> // uint8_t
int main()
{
// uint8_t 는 8비트 (1바이트) 이므로,
// 연속된 배열 공간에서는
// 주소가 1씩 증가함
uint8_t buf_one[100];
buf_one[0] = 1;
buf_one[1] = 2;
buf_one[2] = 4;
printf("&buf_one[0] : %u\n", &buf_one[0]);
printf("&buf_one[1] : %u\n", &buf_one[1]);
printf("&buf_one[2] : %u\n", &buf_one[2]);
char* buf_two = buf_one;
printf("buf_two[0] : %d\n", buf_two[0]);
printf("buf_two[1] : %d\n", buf_two[1]);
printf("buf_two[2] : %d\n", buf_two[2]);
printf("buf_two+0 : %u\n", buf_two+0);
printf("buf_two+1 : %u\n", buf_two+1);
printf("buf_two+2 : %u\n", buf_two+2);
return 0;
}
아래와 같이 출력된다.
&buf_one[0] : 292731376
&buf_one[1] : 292731377
&buf_one[2] : 292731378
buf_two[0] : 1
buf_two[1] : 2
buf_two[2] : 4
buf_two+0 : 292731376
buf_two+1 : 292731377
buf_two+2 : 292731378
buf_two 가 가리키고 있는 것은
buf_one 배열의 0번째 index의 주소이다.
&buf_one[0] 와 buf_two+0 가
같은 주소값으로 출력된 것을 확인할 수 있다.
&buf_one[0] == buf_two+0
*buf_two = buf_one 이므로,
양변에 & 연산자를 취해주면
&(*buf_two) = &(buf_one)
&*가 이 순서대로 나오면 두 연산자 모두 사라지므로
buf_two = &buf_one 이라고 할 수 있다.
&buf_one[0] == buf_two+0 == &buf_one + 0
따라서
&buf_one[0] == buf_two+0
'[2025~] Embedded' 카테고리의 다른 글
[MQTT 실습| Windows x64 | Mosquitto] (0) | 2025.03.14 |
---|---|
Teraterm으로 Yona의 프로젝트 git clone 해오기 (0) | 2025.03.13 |
[영상] IoT 프로토콜 MQTT 특징, 3분 정리 - 친절한 코딩 (0) | 2025.03.12 |