C ++指针技巧

时间:2015-04-08 16:42:07

标签: c++ string pointers

我试图理解这个C ++指针技巧是如何工作的。在MSDN Obtaining a File Name From a File Handle中,我们可以看到:

// Copy the drive letter to the template string
*szDrive = *p;

首先他们宣布一个“模板字符串”,它将接收没有反斜杠(TCHAR szDrive[3] = TEXT(" :");)的驱动器号,然后他们做这个指针技巧和vo!我已经尝试过拆解,但根本没有任何线索:

            *szDrive = *p;
011D178D  mov         eax,dword ptr [p]  
011D1793  mov         cl,byte ptr [eax]  
011D1795  mov         byte ptr [ebp-214h],cl

我担心这是有史以来最蹩脚的伎俩......

2 个答案:

答案 0 :(得分:10)

因为在C ++中,char-arrays和char-pointers在很多方面是等价的,所以它们解除引用两个指针,将一个元素从一个数组复制到另一个数组。

您可以等效地表达相同的功能,这样可以更容易理解他们在做什么:

szDrive[0] = p[0];

答案 1 :(得分:8)

此代码:

*szDrive = *p;

相当于:

szDrive[0] = p[0];

表示您将第一个符号从字符串p复制到字符串szDrive,在这种情况下是驱动器号。