指向索引指向

时间:2012-02-16 22:51:22

标签: c++ pointers indexing

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

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

然而,它告诉我,我不能这样做。如何将指针指向索引中的特定字符?

2 个答案:

答案 0 :(得分:1)

您可以从以下两种方式中进行选择:

save_str = &str[i];

or

save_str = str+i;

答案 1 :(得分:0)

快速实用答案

save_str = &str[i];

扩展描述性无聊答案

“pure c”和“c ++”中有关于数组和指针的功能。

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

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

strcpy(myarray, "Hello World");

// this is the same:
myptr = myarray;

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

当程序员想要某个特定项目的地址时,那么“&amp;”需要运营商:

save_str = &str[i];

我在某个地方读到了,这些功能已添加到了purpouse中。

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

...

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++;
}

...

就个人而言,我希望,“&amp;”应该始终使用,并避免混淆。 欢呼声。