【发布时间】:2016-04-08 06:46:50
【问题描述】:
首先在我解释之前,这是C中的代码:
#include <stdio.h>
void printSize(char* str);
int main()
{
char a[100] = "StackOverflow";
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的内存?
谢谢
【问题讨论】:
-
用简单的方法是找不到的。通常所做的就是在函数中添加另一个参数
int size,它告诉你数组的大小。 -
那么在C中基本上没有办法做到吗?