C编程?使用指针
我的老师今天在编程课上给了我们一个问题,我不明白他是怎么得到答案的。我希望有人能给我解释一下。我们基本上必须展示程序的输出是什么,但是对于如何得到问题的答案,我有点困惑。问题如下:C编程?使用指针,c,syntax,C,Syntax,我的老师今天在编程课上给了我们一个问题,我不明白他是怎么得到答案的。我希望有人能给我解释一下。我们基本上必须展示程序的输出是什么,但是对于如何得到问题的答案,我有点困惑。问题如下: #include <stdio.h> void do_something (int , int * ); int main (void) { int first = 1, second = 2 ; do_something(second, &am
#include <stdio.h>
void do_something (int , int * );
int main (void)
{
int first = 1, second = 2 ;
do_something(second, &first);
printf("%4d%4d\n", first, second);
return (0);
}
void do_something (int thisp, int *that)
{
int the_other;
the_other = 5;
thisp = 2 + the_other;
*that = the_other * thisp;
return;
}
指:
thisp = 2 + 5
*that = 5 * 7
而主要包含第一个的地址,该地址在中被覆盖为35<代码>秒
仍为2
指:
thisp = 2 + 5
*that = 5 * 7
而主要包含第一个的地址,该地址在中被覆盖为35<代码>秒
仍为2 函数do\u something
包含两个参数
正整数(thisp)
指向整数的指针。(即)
您的老师希望您学习的是,按值传递和按地址传递。
在传递值中,原始值不会更改。这是因为在给出的示例中。
变量second
的值被复制thisp
变量
在传递地址中,可以在函数内修改原始值。
这是因为,
指向变量第一个位置的指针。因此,如果更改了的值,则first
的值也将更改
这就是为什么输出中第一个的值发生变化,第二个的值不受影响。
函数do\u something
包含两个参数
正整数(thisp)
指向整数的指针。(即)
您的老师希望您学习的是,按值传递和按地址传递。
在传递值中,原始值不会更改。这是因为在给出的示例中。
变量second
的值被复制thisp
变量
在传递地址中,可以在函数内修改原始值。
这是因为,
指向变量第一个位置的指针。因此,如果更改了的值,则first
的值也将更改
这就是为什么第一个
的值在输出中被更改,而第二个
的值不受影响。哪一行您不理解?使用调试器(如果您知道如何使用它,可能通过IDE),一步一步地执行程序,并检查发生了什么。或者插入打印命令。@Nick:我想函数定义将是void do\u somthing(int this,int*thatp)代码>不是相反。基本上把我搞糊涂的是*,我不确定他是如何得出35和2的答案的。@haccks。。。或者看经典:(from:)哪一行你不懂?使用调试器(如果你知道如何使用它,可能是通过IDE),一步一步地执行程序,并检查发生了什么。或者插入打印命令。@Nick:我想函数定义将是void do\u somthing(int this,int*thatp)代码>不是相反。基本上把我搞糊涂的是*,我不确定他是如何得出35和2的答案的。@haccks。。。或者观看经典:(from:)在C
中没有passbyreference
。对象始终创建一个副本。错误的解释。对不起,我指的是通过地址。在C
中没有passbyreference
。对象始终创建一个副本。错误的解释。对不起,我指的是路过的地址。非常感谢,这正是我要找的。谢谢你的帮助。非常感谢,这正是我想要的。谢谢你的帮助。
thisp = 2 + 5
*that = 5 * 7