测试代码
#include <stdio.h>
#include <string.h>
char buf_arr[100] = {0};
char buf_char[100] = "this is a strint";
int fun(char *buf, char *string);
int fun(char *buf, char *string)
{
int i, j, k;
i = sizeof(buf); /* buf 是一个指针,指针占用 4 字节内容 *buf 就是 buf_arr[0] 的值,是一个 char 类型,所以是 1*/
j = sizeof(*buf); /* sizeof 是一个运算符 计算的是分配空间的实际字节数 */
k = strlen(buf); /* buf 里面没有字符,所以长度是 0 */
printf("%d %d %d\r\n", i, j, k);
i = strlen(string); /* strlen 是一个函数,计算的空间中字符的个数,但不包括结束字符 */
printf("%d\r\n", i);
return 1;
}
int main(void)
{
fun(buf_arr, buf_char);
while (1);
}
/* output
4 1 0
16
*/
所以数组名作为函数的参数传递是一般需要传递数组的长度