비디오: 쉽게 배우는 열혈 C 프로그래밍 - 3화 - 변수와 연산자 2024
C 프로그래밍에서 변수의 유형 및 크기는 먼저 변수를 특정 유형으로 선언하고 sizeof 키워드를 사용하여 밝혀줍니다. 변수의 두 번째 설명 인 내용은 적절한 C 언어 함수를 사용하여 변수의 값을 읽으면 수집 할 수 있습니다.
변수의 세 번째 설명은 메모리에서의 위치입니다. & 연산자와 % p 자리 표시자를 사용하여이 정보를 수집합니다 (O Variable, Thisfore Art Thou?
O 변종, 그 전에는?
#include int main () {char c = 'c'; int i = 123; float f = 98.6; 이중 d = 6. 022E23; printf ("주소 'c'% pn", & c); printf (" '%'pn"의 주소, & i); printf ("주소 'f'% pn", & f); printf ("주소 'd'% pn", & d); return (0);}
& 연산자가 변수의 접두어를 붙이면 변수의 주소, 또는 메모리상의 위치를 나타내는 값을 반환합니다. 이 값은 16 진수로 표시됩니다. 이 값을 보려면 % p 변환 문자가 사용됩니다 (예: O Variable, Thisfore Art Thou?
연습 1 : O 변수에서 소스 코드를 입력하십시오. 귀하의 편집기에. 빌드하고 실행하십시오.
실습 1에서 생성 된 프로그램에 의해 생성 된 결과는 각 컴퓨터뿐만 아니라 프로그램이 실행될 때마다 잠재적으로 고유합니다.
'c'의 주소 0x7fff5fbff8ff 'i'의 주소 0x7fff5fbff8f8 '0x7fff5fbff8f4'의 주소 0x7fff5fbff8f8 주소 0x7fff5fbff8e8
변수 c 는 0x7fff5fbff8ff 위치의 메모리에 저장됩니다., 734, 799, 804, 671. 두 값은 물론 사소한 것입니다. 컴퓨터는 메모리 위치를 추적합니다.
이 그림은 이러한 주소가 메모리에서 어떻게 매핑되는지 보여줍니다.
개별 배열 요소에는 줄 10에있는 배열의 메모리 위치에 표시된 것과 같이 메모리 위치도 있습니다. & 연산자는 특정 요소 변수에 접두사를 붙여 주소를 기 위로합니다. printf () 함수의 % p 변환 문자는 주소를 표시합니다.
배열의 메모리 위치
#include int main () {char hello [] = "Hello!"; int i = 0; while (hello [i]) {printf ("% c at % pn", hello [i], hello [i]); 연습 2
: 배열의 메모리 위치에 표시된 소스 코드를 사용하여 새 프로젝트를 만듭니다. 빌드하고 실행하십시오. 다시 한번, 메모리 위치 출력은 각 컴퓨터에서 고유합니다. 0x7fff5fbff8f0에서의 H, 0x7fff5fbff8f1에서의 H, 0x7fff5fbff8f3에서의 0x7fff5fbff8f2, 0x7fff5fbff8f4에서의
H!at 0x7fff5fbff8f5
실습 1의 예제와 달리 실습 2에서 생성 된 주소는 한 바이트 씩 연속적으로 메모리에 있습니다.
연습 3
: 각 요소의 메모리 주소와 함께 int 배열에 5 개의 값을 표시하는 프로그램을 코딩합니다. for 루프는 코드 작성이 더 쉬울 지 모르지만 배열의 메모리 위치를 사용하여 영감을 얻을 수 있습니다. 그건 그렇고, & 메모리 위치 연산자는 당신에게 친숙해야합니다. 변수 자체가 아니라 변수의 주소가 필요한 scanf () 함수에서 사용합니다. 왜냐하면 scanf ()는 메모리 위치에 직접 값을 배치하기 때문입니다. 방법? 포인터를 사용하여 물론!
-
& 연산자는 비트 AND 연산자입니다. 그러나 컴파일러는 변수가 접두사가 될 때와 &가 이진 수학 방정식의 일부일 때를 알기에 충분히 똑똑합니다.