如何在 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
.
首先在我解释之前,这是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
.