我不完全了解如何使用指针。
在函数内部,我需要编写代码以返回输入字符串的长度。
int mystrlen (const char *s)
{
char *s[1000], i;
for(i = 0; s[i] != '\0'; ++i);
printf("Length of string: %d, i");
return 0;
}
您能告诉我如何使其工作吗? 谢谢!!
答案 0 :(得分:1)
删除char *s[1000]
,声明int i
而不是char i
,然后返回i
而不是0:
s
,因为它“隐藏变量” s
是一个函数参数,这意味着s
函数参数根本无法读取。char i
更改为int i
可能会增加返回值的范围。如果传递的字符串中包含128个字符,则char i
如果是带符号的8位类型,将返回-128。 int
保证为16位,允许最多32767个字符的字符串(对于字符串长度函数的大多数常用用法来说,绰绰有余)。i
,因为否则该函数没有意义;即使您打印该值,也需要一种使用字符串长度的方法,并且如果不从函数中返回它,则无法这样做。示例正确的代码:
#include <stdio.h>
int mystrlen(const char *s)
{
int i;
for (i = 0; s[i] != '\0'; ++i);
return i;
}
int main(void)
{
const char *s = "Hello world!";
int len = mystrlen(s);
printf("Length of string: %d\n", len);
return 0;
}
答案 1 :(得分:0)
首先,如数字所示,使用指针的方式是使用引用而不是实际变量,因此,如果通过参数传递引用,则不会传递其实际值,而只是传递地址!
正确的代码是:
#include <stdio.h>
int mystrlen (const char *s)
{
int i;
for( i = 0; s[i] != '\0'; ++i);
printf("Length of string: %d\n", i);
return 0;
}
void main(){
char *string = "Hello World";
mystrlen(string);
}
要指出的另一件事是,您试图声明一个const变量并对其进行更改。声明const变量时,它不应更改。