一、printf嵌套调
int main()
{
printf("%d",printf("%d",12));
return 0;
}
输出:122
先打印后面的printf,屏幕先出现12;printf函数返回的是其打印的个数,“12”,个数为2个,所以第一个printf在打印2,最终屏幕输出122
二、数组传参
1、数组传向函数的参数为数组首元素地址
2、数组名是数组首元素地址
3、两个例外
3.1 sizeof(数组名):数组名表示整个数组,计算的是整个数组的大小,单位是字节
32.&数组:数组名表示整个数组,取出的是整个数组的地址
例1:数组名是数组首元素地址
int main()
{
int arr[] = {0};
printf("%p\n",&arr[0]);
printf("%p\n", arr);
return 0;
}
输出: 00000087490FFAD4
00000087490FFAD4
例2:sizeof(数组名)
int main()
{
int arr[10] = {0};
int sz1 = sizeof(arr);
int sz2 = sizeof(arr[0]);
printf("%d\n", sz1);
printf("%d\n", sz2);
return 0;
}
输出: 40 4
例3:&数组
int main()
{
int arr[10] = {0};
printf("%p\n", arr);
printf("%p\n", &arr[0]);
printf("%p\n", &arr);
return 0;
}
输出: 0000002B9C8FF788
0000002B9C8FF788
0000002B9C8FF788
个人理解:数组地址与整型变量地址类似,一个整型变量占用4个字节,一个字节占用一个地址,所以一个整型变量有4个地址,但只用第一个地址去表示;同理,数组中有多个地址,但只用第一个去表示。
例4:
int main()
{
int arr[10] = {0};
printf("%p\n", arr);
printf("%p\n", arr+1);
printf("%p\n", &arr);
printf("%p\n", &arr+1);
return 0;
}
输出: 000000845652F9C8
000000845652F9CC //与上面相差4
000000845652F9C8
000000845652F9F0 //与上面相差40