2014-02-19 2 views
0
struct node 
{ 
    char *ptr = (char *)malloc(frames*sizeof(char)); 
}*start,*current; 

그런 다음 메모리를 할당하려면 node을 할당해야합니다.포인터 값을 동일화하면 포인터 참조가 변경됩니다.

[...]//Assigned values to start node. 
current = start;//Current points to start 
node *temp = new node();//temp will point a newly created node 
*temp = *current;// COPYING VALUES OF CURRENT TO TEMP 
[...] 

나는, 새로운 노드를 만들고 여기에 temp 지점을 만들고 싶어하고 온도에 (여기에 전류가 시작 가리키는) current의 값을 복사합니다.

그러나 여기에 임시 지점 current (여기 start)이 있습니다. 좌절감이 있습니다. 내가 어디로 잘못 가고 있니?

+2

어떤 언어입니까? 그것은 확실히 C가 아니에요 ... – unwind

+0

C++로하고 있지만 C 언어로 실행되지 않는 이유가 있습니다. –

+0

@SrujanBarai C에서'new'가 없습니다. 그런 구조 선언에서 함수 호출을 할 수 없습니까? 당신도 C++에서 그렇게 할 수 있는지 확신하지 못합니다. – unwind

답변

0

  1. 변경 * 온도 = * 온도에 현재 = 현재 두 가지 해결책이 될 수 있습니다. 이렇게하면이 두 포인터가 이제 같은 메모리 위치를 참조하므로 "temp"를 사용하여 "current"값에 액세스 할 수 있습니다. 주의, "현재"또는 "임시"를 사용하여 값을 변경하면 두 포인터의 값이 동일한 메모리 위치를 참조 할 때 변경됩니다.
  2. memcpy를 사용하십시오. 하나의 메모리 위치에서 다른 위치로 값을 복사합니다. Here이 참조입니다. 이제 두 개의 독립적 인 값 복사본이 있습니다.
+0

내가 찾고있는 것. –

2

*temp = *currenttemp = current이어야합니다.

+0

이렇게하면'temp' 포인트가'current' is is it이 될 것입니까? –

+0

대신에'current'가 가리키는'temp' 포인트를 만들 것입니다. 내 잘못 –