2024.4.13
#include<stdio.h>
void f(int num,int *num_1){
int a,b,c,d;
int num_3;
for(int i=0;i<num;i++){
scanf("%d",&num_3);
a=num_3/1000%10;
b=num_3/100%10;
c=num_3/10%10;
d=num_3%10;
if(d-a-b-c>0) (*num_1)++;
}
// printf("%d",*num_1);
}
int main(){
int num=0,num_1=0;
scanf("%d",&num);
f(num,&num_1);
printf("%d",num_1);
return 0;
}
这题之前错过一次,错误的原因是没有对num_1正确地使用指针。在C语言中,只要不涉及量的变化,就不用涉及指针,所以题中的num就不用使用指针,而num_1在题中的量发生了变化,因此他的原先存储的位置也发生了变化,所以输出时还是输出指针最初指向的那个位置的值,也就是0;而如果将其从主函数引入函数中时使用了指针,那么随着num_1的改变,其位置也会跟着改变,其能完成的输出也会跟着指针所指位置的改变而改变——最终完成函数中的对num_1的最终的量的输出。(重点:指针随着变量的值变化而变化位置,位置始终和变量的值一一对应)
标签:输出,int,位置,num,printf,日记,指针 From: https://www.cnblogs.com/2401377187PandZ/p/18133524