1楼说的是对的:
sizeof 的形参不管是数组名还是指针 类型,一律解释成指针 ,即占四个字节;
类似于一下情况时:char char[n];//假设 n是一个常量;
sizeof 的结果就是n值;
至于2楼的说法:strlen(str)得到的是实际存的字符个数;//注意是字符个数,不包括结尾的'\0'
4
100
第一个传进去的是str的首地址,4个字节
第二个是栈内存strlong的长度,100个字节
1 #include <stdio.h>
2 #include <string.h>
3
4 void Func ( char str[2]){ //参数中数组的大小是无所谓的
5 int n2 = sizeof( str );
6 printf("n2 = %d \n", n2 ); //结果为4,原因我感觉和楼上所说的一样
7
8 char strlong[100] = "ddddddddddddd";
9 int n = sizeof( strlong );
10 int n1 = strlen( strlong );
11 printf("n = %d\n", n ); //100
12 printf("n1 = %d\n\n", n1); //13 字符串"ddddddddddddd"的长度为13
13 }
14
15
16 int main(){
17 char str1[100];
18 Func(str1);
19 return 0;
20 }