int main()
{
int i;
for(i=0;i<3;i++)
printf("%d %d %d",i++,i++,i++);
}
为什么输出结果是2 1 0
不是应该是0 1 2 吗
在 C 语言中,函数参数的求值顺序是未定义的,不同的编译器和环境中可能产生不同的结果。因此这种依赖于未定义行为的代码应该避免使用,以确保代码的可移植性和可预测性。
这是未定义行为。对于这段代码的输出,C语言标准没有明确规定任何具体的行为,可以有多种不同的结果和表现。
由于删除、查找、修改等功能都需要找到某个联系人,所以我们先写一个查找联系人的函数作为其他函数的铺垫,避免其他函数反复写同样代码效率太低。
int Find(struct Contact*pc, const char* name)//数组传过来本质是首元素地址,const可以防止name的内容被改变
{
int i = 0;
for (i = 0;i < pc->sz;i++)
{
if (strcmp(pc->data[i].name, name) == 0)//字符串比较用strcmp比较,相同返回0,不同返回+-1
{
return i;//返回该姓名在结构体数组里的下标
}
}
return -1;//数组遍历完没有返回非负数则没有找到,这里返回-1
}