如何增加指向char数组的指针的位置?

时间:2015-02-10 11:58:52

标签: c++ c arrays pointers

我有这些功能:

void mon_strlen(char *s){
    printf("Contenue: %c\n",*s);
    s++; //here
    printf("Contenue: %c\n",*s);
    system("PAUSE");
}

int main()
{
    char str[10]="Hello";
    char *s;
    s=str[0];
    mon_strlen(&s);
    system("PAUSE");
    return 0;
}

如何在函数s中增加指针mon_strlen的内存位置以进行打印:

Contenue: H
Contenue: e

或我的逻辑错了?

2 个答案:

答案 0 :(得分:3)

在您的代码中,更改

    s=str[0]; 

    s=str;

    s=&str[0];

并将mon_strlen()称为

mon_strlen(s);

答案 1 :(得分:0)

要在main()中进行更改,您需要将指针传递给指针,如此

void mon_strlen(char **s) {
    char *ptr;
    if (s == NULL)
        return;
    ptr = *s;
    if (ptr == NULL)
        return;
    printf("Contenue: %c\n", *ptr);
    ptr = (*s)++; //here
    printf("Contenue: %c\n", *ptr);
    system("PAUSE");
}

main()中的来电就像您的mon_strlen()函数有此签名一样

void mon_strlen(char **s)

如果你启用了警告,你的编译器会警告你。

main()中你需要像这样传递str

mon_strlen(&str);