如何增加指向 char 数组的指针的位置?
How to incress position of a pointer that is pointing to a char array?
我有这些功能:
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;
}
如何在函数 mon_strlen
中增加指针 s
的内存位置以打印:
Contenue: H
Contenue: e
还是我的逻辑不对?
要使更改在 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);
在您的代码中,更改
s=str[0];
到
s=str;
或
s=&str[0];
并将 mon_strlen()
称为
mon_strlen(s);
我有这些功能:
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;
}
如何在函数 mon_strlen
中增加指针 s
的内存位置以打印:
Contenue: H
Contenue: e
还是我的逻辑不对?
要使更改在 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);
在您的代码中,更改
s=str[0];
到
s=str;
或
s=&str[0];
并将 mon_strlen()
称为
mon_strlen(s);