我已經在C中創建了一個結構,並試圖以不同的方式打印結構值。爲什麼我不能在C中取消引用指向結構的指針?
#include<stdio.h>
#include<windows.h>
#include<tchar.h>
#define KEY_SIZE 8
typedef struct _TREENODE {
struct _TREENODE *Left, *Right;
TCHAR key[KEY_SIZE];
LPTSTR pData;
}TREENODE, *LPTNODE, **LPPTNODE;
#define NODE_SIZE sizeof(TREENODE)
int _tmain(int argc, LPTSTR argv[])
{
LPTNODE pNode;
TCHAR name[]="sachin tendulkar";
pNode = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, NODE_SIZE);
pNode->pData = name;
// Bothe address are same
printf("0x%p = 0x%p\n", ((char *)pNode + 16), (&((*pNode).pData)));
//Why does it give different value ???
printf("0x%p = 0x%p\n", *((char *)pNode + 16), *(&((*pNode).pData)) );
// ERROR !!!
printf("0x%s = 0x%s\n", *((char *)pNode + 16), *(&((*pNode).pData)) );
return 0;
}
2個以下代碼不起作用。
printf("0x%p = 0x%p\n", *((char *)pNode + 16), *(&((*pNode).pData)) );
printf("0x%s = 0x%s\n", *((char *)pNode + 16), *(&((*pNode).pData)) );
說下面的代碼是給相同的輸出:
((char *)pNode + 16) = (&((*pNode).pData))
但下面的代碼都沒有!
*((char *)pNode + 16) != *(&((*pNode).pData))
'錯誤!!!' - 哪種錯誤?也許你應該顯示實際的輸出。 – 4386427