본문 바로가기

C++

배열과 포인터 정리

 

 

#include <iostream>
using namespace std;

int main() {
	// 스택에 1바이트 10개의 공간 할당받아 해당 주소에 값이 저장됨.
    // char[9]에는 \0 저장. null? 값임
    char str[10] = "123456789";
    char *p;
    
    p = str; // p = &str[0] 과 같음.
    
    // 123456789 출력
    cout << str << endl;
    // p가 가리키는 주소(ex>0x7ffffffffb8e)(&str[0]), p가 가리키는 주소 안의 값(1)(str[0])
    cout << (void *)p << " " << *p << endl;
    p++;
    // p가 가리키는 주소 + 1(ex>0x7ffffffffb8f)(&str[1]), p 가 가리키는 주소 + 1 안의 값(2)(str[1])
    cout << (void *)p << " " << *p << endl;
}
#include <iostream>
using namespace std;

// ./args 250 입력 예시

int main(int argc, char *argv[]) {
	// argc 는 command line arguemnts의 개수(명령행 인자의 개수)
    // argv 에는 8바이트의 주소가 들어가 있다. (64bit OS 기준)
    
    // ./args 출력
    cout << argv[0] << endl;
    // ./args가 저장되어 있는 주소 시작지점 8바이트 출력
    cout << (void *)argv[0] << endl;
    // argv 배열의 시작지점 주소 출력(&argv[0])
    cout << &argv[0] << endl;
    // . 출력 
    cout << *argv[0] << endl;
    // 2 출력
    cout << sizeof("a") << endl;
}