我目前正在从头开始编写strstr。在我的代码中,我正在为一个字符串编制索引,最终我需要使用另一个指针在字符串上保存一个特定点。这是我正在努力的代码部分:

char *save_str;
for(int i=0;i<length_str1; i++)
{
    if(str1[i]==str2[0])
    {
        *save_str=str[i];


但是,这告诉我我不能这样做。如何使指针指向索引中的特定字符?

最佳答案

快速实用答案

save_str = &str[i];


扩展描述性无聊答案

“纯c”和“ c ++”中有一个有关数组和指针的功能。

当程序员想要完整数组或第一项的地址时,不需要“&”运算符,甚至不需要某些编译器将其视为错误或警告。

char *myptr = NULL;
char myarray[512];

strcpy(myarray, "Hello World");

// this is the same:
myptr = myarray;

// this is the same:
myptr = &myarray[0];


当程序员想要特定项目的地址时,则需要“&”运算符:

save_str = &str[i];


我在某处读到,这些功能是出于目的而添加的。

许多开发人员避免了这种情况,而是使用指针算法:

...

char *save_str;
...

// "&" not required
char *auxptr = str1;

for(int i=0; i < length_str1; i++)
{
    // compare contents of pointer, not pointer, itself
    if(*auxptr == str2[0])
    {
        *save_str = *auxptr;
    }

    // move pointer to next consecutive location
    auxptr++;
}

...


我个人希望“&”应始终使用,并避免造成混淆。
干杯。

关于c++ - 指向索引的指向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9320346/

10-14 08:49