如何在 C 函数中查找字符串的大小?

How to find the size of a string inside a function in C?

首先在我解释之前,这是C中的代码:

#include <stdio.h>

void printSize(char* str);

int main()
{
    char a[100] = "Whosebug";
    printSize(a);
    return 0;
}

void printSize(char* str)
{
    int n = sizeof(str) / sizeof(char);
    printf("%d" ,n);
}

如您所见,我正在尝试让我的函数打印值“100”,因为 100 是我分配给 char 数组 a 的大小。但是我得到 8 作为我的答案。现在我知道为什么我在这里得到 8 因为它正在打印指针的大小。所以我的问题是,如果我不能使用这种方法打印出“100”的值,那么我如何从函数内部找出分配给 a 的内存?

谢谢

要获取字符串的长度,请使用 strlen 函数。要获得 array 的大小,您需要将其作为参数传递。

当您获得指针的大小时,您获得的是实际 指针 的大小,而不是它指向的内容。在您的情况下,您似乎在 64 位平台上,其中指针为 64 位(8 字节),然后将其除以 sizeof(char)(定义为始终为 1),您将得到值 8.