【发布时间】:2020-09-03 19:19:39
【问题描述】:
我对这段代码有几个问题。首先,使用 swap 函数,我们是否因为更改了地址内部的值而取消了 ptr1 和 ptr2 的引用,而不是直接交换地址本身?其次,对于 main 函数,我如何将 num1 和 num2 设置为等于在命令行中给出的输入。例如,“./a.out 5 10”,其中 num1 =5 且 num2 = 10。谢谢
#include <stdio.h>
void swap(int *ptr1, int *ptr2)
{
int temp;
temp = *ptr1;
*ptr1 = *ptr2;
*ptr2 = temp;
}
int main(int argc, char *argv[])
{
int num1, num2;
argv[1] = num1;
argv[2] = num2;
printf("%d %d\n", num1, num2);
swap(&num1, &num2);
printf("%d %d\n", num1, num2);
return 0;
}
【问题讨论】:
-
这段代码 sn -p int num1, num2; argv[1] = 数字1; argv[2] = 数字2;没有意义。
-
swap函数正在交换指针的对象,而不是指针。即使它确实交换了指针,它们也不会在调用方改变(函数参数是副本)。至于尝试将传递的argv数组设置为整数:不要。您已获得指向字符串的指针数组。在任何情况下,num1和num2都没有被初始化。 -
@VladfromMoscow 这可能没有意义,因为它不正确。我希望能够将这些变量设置为用户在命令行中输入的任何内容。
标签: c function pointers command-line