답변
int hi;
보유 C. 내용을 사용하고 어떤 책에있는 포인터에 적어도 장이 있어야한다 메모리에 int
의 공간이 있고, hi
을 참조 할 때마다 메모리 공간에 int
을 직접 읽거나 쓸 수 있습니다.
int *hi;
포인터는 판독 또는 기록하거나이다마다 hi
사용하는 메모리의 pointer
int
에 대한 공간을 보유한다. 너는 이 아니고 int
으로 작업하는이 아니며, int
에 대한 포인터 일 뿐이다. 포인터가 어딘가에서 쓸만한 것을 참조 할 수있는 어딘가에 int
이 있어야한다. 예 :
int hi;
int *phi;
phi = &hi; // phi references the int hi
*phi = 3; // set `hi` to 3
환상적입니다. 정확히 내가 알고 싶었던 것. 질문 하나만 더 드리면 안 될까요? 나는 포인터가 매우 광범위하게 사용되는 것을 보았다. 왜? 왜 그렇게 특별하니? 왜 어떤 사람들은 단순히 정수가 아닌 포인터를 사용하는 것을 선호합니까? – Amit
죄송합니다. 정수가 아니며 int 변수를 의미합니다. – Amit
한 번 더 의견을 보내주십시오. 죄송합니다. 만약 내가 이렇게하면 : int hi [4]; int * phi; phi = &hi[2];'이렇게하면 phi는 'hi'배열의 세 번째 값 (0 인덱스라고 가정)의 값을 얻습니다. 포인터없이 이것을 처리 할 수 있습니까? 예 :'int hi [4]; int phi; φ = hi [2]; '. 그 같은 일을하지 않겠습니까? 그렇다면 마침내 포인터가 유용한 이유를 마침내 알 수 있습니다. – Amit
첫 번째 변수는 정수 변수를 선언하고 두 번째 변수는 정수에 대한 포인터를 선언합니다.
포인터는 StackOverflow의 게시물의 범위를 벗어하지만 this Wikipedia article는 출발점이 될 것입니다, 당신은
a. int i;
b. int *address;
c. address = &i;
줄에서 정수형 변수 i
이 선언됩니다. 이 작업이 완료되면 컴파일러는 크기가 sizeof(int)
인 메모리 공간 (컴퓨터에 4 바이트)을 예약합니다. 이 메모리 공간을 참조하려면 포인터를 사용해야합니다.
줄 b는 특수 속성이있는 address
이라는 변수를 선언합니다. 이 변수는 int
을 보유하지 않지만 유형이 int
인 변수의 주소를 저장합니다. 따라서 어떤 값 address
이든이 값은 int
인 변수의 주소로 해석되어야합니다. 현재 변수 address
은 어떤 변수의 메모리 주소를 보유해야하는지에 대해 아직 정의하지 않았기 때문에 어떤 메모리 주소도 보유하지 않습니다.
줄 c는 "주소가 변수 i
의 메모리 주소와 같습니다"라고 읽을 수 있습니다. 이제 변수 주소는 int
변수 i
의 메모리 주소를 저장합니다.이 코드는 내가 볼 디버거를 사용하여 실행됩니다
int main(){
int a;
int &b;
b=&a;
a=10;
return 0;
}
:
a = 10 // the variable's value
b = 0x7fffffffe2fc // this is the address at which 'a' is stored.
이 포인터는 매우 강력하고 더 자주 당신이 그것을 이해하면 그것을 사용하기 시작합니다. 다른 사람들이 읽으라고 제안한 자료 외에도 디버거 (gdb)를 사용하고 포인터가있는 몇 가지 프로그램을 실행하고 코드에서 선언 한 모든 변수를 확인하는 것이 좋습니다. 나는 어떤 문제에 대한 시각적 인 그림을 가지고있을 때 상황을 더 잘 이해하며 포인터에 대한 이해를 빠르게 할 수 있다고 생각합니다.
int hi ------는 hi가 2 바이트를 할당하는 정수임을 나타냅니다. int * hi ------ *는 변수의 주소를 보유하고 변수가 정수인 포인터를 나타냅니다. 두 개 모두 different.one은 정수를 나타내고 다른 하나는 정수의 주소를 나타냅니다.
int hi; 정수 변수에 대해 메모리에 자리를 예약하는 동안 int * ptr; 은 다른 변수의 메모리 주소를 포함하는 포인터를 메모리에 저장합니다. 당신은 다른 방법으로 포인터를 사용할 수 있습니다.
int *ptr = hi;
int *ptr;
ptr = &hi;
(가) 당신이 그것을가 가리키는 주소를 변경 ptr에의 값을 변경
하지만 드 참조하는 주소가 다른 변수의 값을 변경 한 후 값을 변경 한 경우.*ptr = 3;
하이의 값을 변경합니다.
hi
기억 특정 위치에서 정수형의 값이지만
*hi
저장 INT 어떤 유형의 변수의 어드레스.
예 :
int hi = 10;
int *hello = &hi;
첫째 - INT 안녕하세요; 여기서 "hi"라는 정수 변수를 선언합니다.
다음 - int * hi; 여기 는 "안녕하세요"정수 값을 가리킬 수 있습니다 포인터입니다
참고 : INT * 하이와 안녕하세요 * INT이 @Frustrated을 편집하기위한 구문 같은
- 1. 지식에 대한 간단한 질문?
- 2. C#에 대한 간단한 SQL 명령
- 3. 간단한 C/C++ 질문
- 4. 상속/메서드 재정의 C++에 대한 질문
- 5. C# CMS의 명명 규칙에 대한 간단한 질문
- 6. OpenMP에 대한 간단한 질문
- 7. CGRectIntersectsRect에 대한 간단한 질문
- 8. 간단한 C 질문
- 9. lunarlander 예제에 대한 간단한 질문
- 10. WIN32의 IsDialogMessage()에 대한 질문
- 11. C++에 const_cast 질문
- 12. C# NHibernate 간단한 질문
- 13. C++ 포인터 간단한 질문
- 14. C#/regex, 간단한 질문
- 15. C# 간단한 디버깅 질문
- 16. 간단한 C# 이벤트는 질문
- 17. C# 문자열 - 간단한 구문 질문
- 18. QGraphicsItem의 'itemChange()'에 대한 질문
- 19. [UIViewController alloc]에 대한 질문 :
- 20. 문구 (sql)에 대한 질문
- 21. $ (문서) .bind()에 대한 질문
- 22. jQuery의 .stop()에 대한 질문!
- 23. opengl : glutMainLoop()에 대한 질문
- 24. SocketAsyncEventArgs (SAEA)에 대한 질문
- 25. JavaScript의 "this"에 대한 질문
- 26. 조건부 컴파일 (ifndef)에 관한 간단한 질문
- 27. Google지도에 대한 간단한 질문 - 센터링
- 28. 자바 동기화에 대한 간단한 질문
- 29. 원격 ssh에 대한 간단한 질문
- 30. 질문 연산자에 대한 간단한 질문입니다.
덕분에 ... – Amit
당신에게 포인터에 대한 더 깊은 이해를 원할 수 있습니다 : http://www.eskimo.com/~scs/cclass/notes/sx10b.html – FrustratedWithFormsDesigner