为何使用printf时出现double*与格式符不匹配的类型警告?
问题原因与解决方法
警告产生的原因
printf的格式符%lf是用来输出double类型的数值的,但你调用时传入的&S和&P是double*类型的指针(也就是变量S、P在内存中的地址),两者类型不匹配,所以编译器抛出了类型兼容警告。
消除警告的两种方案
场景1:输出变量S和P的数值(最可能的需求)
直接传入变量本身即可,不需要取地址:
printf("The average and sum of the variables: %lf %lf", S, P);
你代码里定义了指针pSum和pAverage,如果想用指针访问数值,也可以通过解引用操作符*获取指针指向的变量值:
printf("The average and sum of the variables: %lf %lf", *pSum, *pAverage);
场景2:输出变量S和P的内存地址
如果你的目的是打印变量的地址(指针值),需要把格式符换成%p,同时将指针转换为void*类型保证可移植性:
printf("The addresses of S and P: %p %p", (void*)&S, (void*)&P);
内容的提问来源于stack exchange,提问作者Min Park
相关产品推荐
相关产品推荐

