【发布时间】:2022-01-10 08:51:06
【问题描述】:
我是 C 新手,对 Visual Studio Code 有点困惑。
我不明白那是什么意思。
当我在另一个编译器中运行代码时,它确实会运行。
void swap(int* x, int *y);
int exe1(int* num1Ptr, int* num2Ptr, int* num3Ptr);
int main()
{
int a = 123, b = 456 , c =4;
int* pa, * pb ,*pc;
pa = &a;
pb = &b;
pc = &c;
printf("pa = %d , pb = %d, pc = %d\n", *pa, *pb, *pc);
exe1(pa, pb, pc);
printf("pa = %d , pb = %d, pc = %d\n", *pa, *pb, *pc);
return 0;
}
void swap(int* x, int* y) {
int temp = *x;
*x = *y;
*y = *x;
}
int exe1(int* num1Ptr, int* num2Ptr, int* num3Ptr) {
if (*num2Ptr > *num1Ptr) {
swap(*num1Ptr, *num2Ptr);
}
if (*num3Ptr > *num2Ptr) {
swap(*num3Ptr, *num2Ptr);
}
if (*num3Ptr > *num1Ptr) {
swap(*num3Ptr, *num1Ptr);
}
}
【问题讨论】:
-
您对 swap 的调用应该传递 num1Ptr 而不是 *num1Ptr 等。您的编译器应该对此发出警告。
-
你的swap函数从来没有使用
temp,很可疑。 -
传递 'swap' 的参数 1 使指针从整数而不进行强制转换
-
swap(*num1Ptr, *num2Ptr);-->swap(num1Ptr, num2Ptr); -
*y = *x;-->*y = tmp;
标签: c visual-studio