用指针输入定义功能

时间:2018-09-10 01:12:03

标签: c function pointers

我不完全了解如何使用指针。

在函数内部,我需要编写代码以返回输入字符串的长度。

int mystrlen (const char *s)
{
    char *s[1000], i;
    for(i = 0; s[i] != '\0'; ++i);
    printf("Length of string: %d, i");
    return 0;
}

您能告诉我如何使其工作吗? 谢谢!!

2 个答案:

答案 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变量时,它不应更改。