태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

아래 코드는 배열을 가리키는 포인터와

포인터를 사용한 배열의 탐색 + 해당 위치의 값에 대입연산 하는 코드이다.

#include <iostream>
using namespace std;


int main()
{
int nArray[10];// 배열 선언
int* p = &nArray[0];

for (int i = 0; i < 10; ++i)
*(p + i) = i;

for (int i = 0; i < 10; ++i)
cout << "p + " << i << " = " << *( p + i ) << "\n";


system("pause");

return 0;

}

===============================================
출력화면


===============================================
 

비타민 퀴즈 

변수 i없이 탐색이 가능한가?



==========================================

#include <iostream>
using namespace std;


int main()
{
int nArray[10];// 배열 선언
int* p = &nArray[0];


while ( p != &nArray[10] ) // 마지막 원소를 넘어서면 멈춘다.
{
// 첫번째 원소와의 차이를 통해 인덱스를 구한다.

*p = p - &nArray[0];
cout << *p << "\n";
// 다음 원소를 가리키게 한다.
++p;
}


int i;

for (int i = 0; i < 10; ++i)
cout << "p + " << i << " = " << nArray[i] << "\n";//i를 사용하지 말라고 했지만 이해를 돕기 위해 i를 사용했다.


system("pause");

return 0;

}


===================================
출력화면
 
 



==================================

답 :  while 문을 사용하여 반복시키면 가능하다.

저작자 표시 비영리
신고

'공부 > C++' 카테고리의 다른 글

Visual Studio 2008 줄 번호 표시 방법  (0) 2011.12.06
This 포인터란?  (0) 2011.11.25
포인터의 덧셈을 사용한 배열의 탐색  (0) 2011.11.25
const 와 포인터.  (0) 2011.11.25
0과 NULL  (0) 2011.11.25
아무것도 가리키지 않는. 포인터의 출력  (0) 2011.11.24
Posted by 졸가메

const 와 포인터.

공부/C++ 2011.11.25 09:49
값을 고정시키는 속성인 const는

포인터에 적용시키는 구간이 2구간이 된다.

포인터가 가리키는 값이 const임을 나타내는 경우

포인터 자체가 const인 경우.




가리키는 값이 const인 경우에는

const 변수타입 *포인터변수명 = 가리키는 값;
[ex : const int* p = &il; ]


순서이고


포인터가 const인 경우에는

변수타입*  const 포인터변수명 = 가리키는 값;
[ex :  int* const  p = &il; ]
순서이다.

물론 변수타입 선언의 앞과 뒤쪽에 모두 const를 넣어

가리키는 값도 const. 포인터도 const인 경우를 만들 수도 있다.
 
 [ex : const  int* const  p = &il; ]
저작자 표시 비영리
신고

'공부 > C++' 카테고리의 다른 글

This 포인터란?  (0) 2011.11.25
포인터의 덧셈을 사용한 배열의 탐색  (0) 2011.11.25
const 와 포인터.  (0) 2011.11.25
0과 NULL  (0) 2011.11.25
아무것도 가리키지 않는. 포인터의 출력  (0) 2011.11.24
포인터 동작의 이해.  (0) 2011.11.24
Posted by 졸가메
포인터 를 사용할때에

포인터 변수는 항상 0 으로 초기화 해야하며

포인터 변수를 사용하기 전에는 포인터 변수의 값이 0인지 아닌지 비교해야 한다.

비교하는 방법은 if(!포인터변수)  를 사용하는것이 간편하다.





아무것도 가리키지 않는. 포인터의 출력 예제 코드

#include <iostream>
using namespace std;


int main()
{
int* p = 0;//아무것도 가리키고있지 않음을 나타낸다.
//cout << "*p = " << *p << "\n"; 주석처리하지 않으면 아무것도 가리키고있지 않기때문에 에러가 난다.
cout << "p = " << p << "\n";

if (0!=p)
*p = 30;//p가 0 이 아닌 경우에만  가리키는 곳의 값을 30으로 바꾼다. 가리키는 곳이 없으므로 가리키는 곳의 값을 30으로 만들 수 없다.

int a = 100; //int값 a를 선언한다.
p = &a; //p가 a를 가리키게 만든다.

if(!p) //p가 0 이 아니게 되었으므로 아래의 코드를 실행한다.
*p = 30; //p가 가리키는 곳의 변수에 30을 대입한다.

cout << "계산이 다 끝난 후의 값\n";
cout << "*p = " << *p << "\n";
cout << "p = " << p << "\n";


system("pause");

return 0;

}


//출력화면

 

 
저작자 표시 비영리
신고
Posted by 졸가메

#include <iostream>
using namespace std;


int main()
{
int i = 0x12345678;

char* pc = (char*)&i;

        cout << hex; //여기서 hex는 아래에 출력되는 정수를 16진수로 나오게 하는 명령이다.
cout << "*pc = " << (int) *pc << "\n";
cout << "*pc = " << *pc << "\n";
cout << "pc = " << pc << "\n";


system("pause");

return 0;

}


/////출력화면




///////////////// 

여기에서 char* pc = (char*)&i; 

까지 실행되면

pc가 가리키는 i의 상태는

0x78  0x56  0x34  0x12

순으로 입력되어있는 int값을 가진 변수 이다.

하지만 char*를 통해 char타입으로 가져오라고 하여  컴퓨터는 가장 앞부분의 내용 만 가져오게 된다.

char타입은 1바이트 를 사용하기 때문이다.

그래서 출력값이 78(16진수) 가 나온다.


출력 화면에서 

가장 윗줄은 출력시에 int값으로 변환 한 값. 

그다음은 변환하지 않은 값.

마지막은 가리키는 주소값[char형인지라 쓰레기값이 같이 출력됨] 이다.




 
저작자 표시 비영리
신고
Posted by 졸가메
거참 제목 길다.

말 그대로

 주소를 사용하여 정보에 접근하여 그 값을 이용하여 바꾸는.

 다른말로는 포인터를 사용해서 포인터가 가리키는 값을 바꾸는 방법.

 
#include <iostream>
using namespace std;


int main()
{
int a = 123;
int* p = &a;
cout << "a = " << a << "\n"; //변경 전의 a값.
cout << "*p  = " << *p << "\n"; // *p는 p가 가리키는 주소값에 있는 변수를 뜻함.
*p = 789; //p가 가리키는 변수 = 789 

cout << "a = " << a << "\n";  
cout << "p = " << p << "\n"; //포인터변수인 p가 가리키고있는 주소값.
cout << "*p = " << *p << "\n"; // 변경 후의 값을 출력

system("pause");

return 0;

}

///////////////////

출력화면




///////////// 

 
저작자 표시 비영리
신고
Posted by 졸가메