1.输入字符串时,前面不需要加&,因为数组名本来就是地址
2.比较字符串的时候不能直接这样比较:
if(password == "123456")
printf("密码正确\n");
而是应该使用strcmp函数 ( 头文件为:#include<string.h> ) :
if( strcmp(password,"123456") == 0 )
printf("密码正确\n");
3.数组传参:
#include<stdio.h>
void fun(a[])
{
printf("%d\n",sizeof(a));
}
int main()
{
int a[10] = { 0 };
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(a[0]));
fun(a);
return 0;
}
结果为:
40
4
8
前两个都是正常算大小,应该问题不大,第三个为什么是8呢?
因为数组在传参的时候,本质并不是传整个数组,而是传首元素地址,所以实参实际上不是数组,而是指针,所以在x64环境下算出来的sizeof(a)大小就是8,而x84环境下算出来的大小应是4
并且:子函数在访问主函数的a数组时,arr[0]相当于*(arr + 0)