선언에 값에 대한 포인터를 할당 할 수 있습니까? 이런 식으로 뭔가 :C++에서 포인터 초기화
int *p = &(1000);
&이 연산자의 주소 그리고 당신은 할 수 없습니다 :
int * p = &(1000)
선언에 값에 대한 포인터를 할당 할 수 있습니까? 이런 식으로 뭔가 :C++에서 포인터 초기화
int *p = &(1000);
&이 연산자의 주소 그리고 당신은 할 수 없습니다 :
int * p = &(1000)
예, 당신이 선언의 값으로 포인터를 초기화 할 수 있습니다, 그러나 당신은 할 수 없다 상수에 적용하십시오 (가능하다면 재미있을 것입니다).
int foo = 1000;
int *p = &foo;
또는 유형 캐스팅 : 다른 변수를 사용해보십시오
int *p = (int *)(1000); // or reinterpret_cast<>/static_cast<>/etc
음. 나는 당신이 상수의 비 const 주소를 취할 수 있다고 생각하지 않습니다.
하지만이 작동합니다
int x = 3;
int *px = &x;
cout << *px; // prints 3
나이 :
const int x = 3;
const int *px = &x;
const int *pfoo = reinterpret_cast<const int*>(47);
무엇에 대해 :
// Creates a pointer p to an integer initialized with value 1000.
int * p = new int(1000);
테스트 및 작품. ;-)
하지만 삭제하는 것을 잊지 마세요! – GManNickG
내게는 두 가지 명확한 점이 없습니다. 포인터를 특정 값 (예 : 주소)으로 설정 하시겠습니까? 아니면 포인터가 특정 변수를 가리 키도록 하시겠습니까?
후자의 경우 주소 연산자 만 사용할 수 있습니다. 포인터의 값은 주소이 some_int_variable
으로 설정됩니다.
int *p = &some_int_variable;
*p = 10; // same as some_int_variable = 10;
주 다음 무엇을 수동으로 포인터의 값의 악 변화하고 있습니다. 당신이 그것을하고 싶지 않은지 모른다면, 당신은 그것을하고 싶지 않습니다.
전자의 경우(일부 특정 주어진 주소로 즉 설정), 당신은 단지 INT를 가지고 주소로 해석되지 않습니다 컴파일러 때문에
int *p = 1000;
할 수 없습니다.
int *p = reinterpret_cast<int*>(1000);
지금, 포인터가 주소의 결과는 구현 정의 된 것을 1000 주를 어떤 정수를 (희망) 참조합니다 : 당신은이 명시 적으로 수행해야 컴파일러에게해야합니다. 그럼에도 불구하고, 그것은 의미론이며 컴파일러에게 그것에 대해 알려주는 방식입니다.
업데이트 :위원회는 메모로 제안 된 이상한 행동을 고쳤으며, 그 대안으로 전에 해결 방법을 제공했습니다. See here.
절대 주소, 즉 임베디드 시스템에 설정하려고하십니까?대답에 큰 차이가 있습니다. –
실제로, 당신이 찾고있는 것을 추측하기는 어렵습니다 ... 나는 당신이 포인터에 대해 새롭고 구두 조건을 혼동스럽게 생각합니다. 모두 ... 어딘가에서 시작해야합니다. :-) –