求高人解释下面该C语言程序,并说出得出此结果的由来

求高人解释下面该C语言程序,并说出得出此结果的由来,第1张

1 运行结果如下:

1, 3, 2

2 分析:

#include <stdioh>

void foo(int a,int b) //函数的功能是交换a,b所指对象的值。

{

a=a+b;

b=a-b;

a=a-b;

}

void main()

{

int a=1,b=2,c=3;

foo(&a,&b); //交换a,b的值,a,,b,c的值分别为2,1,3。

foo(&b,&c); //交换b,c的值,a,,b,c的值分别为2,3,1。

foo(&c,&a); //交换c,a的值,a,,b,c的值分别为1,3,2。

printf("%d, %d, %d ",a,b,c);

}

1/程序:

public class TwoDimArray2 {

public static void main(String[] args){

int [][] arr = {{1,2,3},{4,5,6}};

int [] foo = arr[0];

Systemoutprintln("1 ");

for(int i=0 ;i<foolength;i++){

Systemoutprint(foo[i]+" ");

}

Systemoutprintln();

foo=arr[1];

Systemoutprintln("2 ");

for(int i=0;i<foolength;i++){

Systemoutprint(foo[i]+" ");

}

Systemoutprintln();

}

}

2/运行结果:

1 2 3 

4 5 6

3/问题:不理解int[] foo = arr[0] 和 foo = arr[1]为什么指向不同

int[] foo = arr[0] :实际是初始化foo数组,并给foo数组分配了内存空间,然后赋初值arr0;

foo = arr[1]:实际是因为已经开辟了foo的内存空间,并且初始化为数组类型格式,那么foo作为数组名就代表了这一片内存空间的地址,即将arr二维数组的第二个元素赋值给foo代表的那一块数组内存空间。

<script type="text/javascript">

<!--

function start(){ //3秒钟自动调用一次 foo()函数

setInterval("foo()",3000);

}

function foo(){

}

-->

</script>

<body onload="staft()"> //页面一加载时 调用 start()

不太明白你说的定时调用具体是什么情况,我理解的两种情况都给你了

setTimeout("foo()",1000);//第一种就是1s的时间后执行foo(),且只执行一次

setInterval("foo()", 1000);//每隔1s就调用一次foo(),会反复调用

m的地址(假定地址

传递给

p(p=m),

m

地址原来寄存的‘值’是0,在函数foo中修改FF00中的‘值’变成100,返回主函数printf(m:

%d,

n:

%d,

m,

n);

输出

m

的地址(FFOO)里的值。

令1种方法是函数本身有返回值:

#include

stdioh

foo(int

p)

{

p

=

100;

return

p;

/不可少/

}

int

main()

{

int

m

=

0,k;

k=foo(m);

printf(result:

%d

,k);

/或

printf(m:

%d,foo(m));可以省略k变量/

printf(m:

%d\n\n,m);

/输出

0

/

}

其中

m

给函数p的只是1个拷贝,p形参m实参,p没法改变m的值,由于p所在的地址不是(FF00)。

结果:result:100

m:0

来源于军用俚语FUBAR,全称是 fucked up beyond all recognition/repair/reason;在编程用做变量名是MIT铁路模型技术俱乐部带的头。

就像中国人爱用a当变量名一样,这个词没有意义,所以用来当变量名不会有歧义。

在执行布尔运算的情况下,或是当表达式被用于流程控制语句时,以下值会被解析为假值: False, None, 所有类型的数字零,以及空字符串和空容器(包括字符串、元组、列表、字典、集合与冻结集合)。 所有其他值都会被解析为真值。 用户自定义对象可通过提供 __bool__() 方法来定制其逻辑值。

运算符 not 将在其参数为假值时产生 True,否则产生 False。

表达式 x and y 首先对 x 求值;如果 x 为假则返回该值;否则对 y 求值并返回其结果值。

表达式 x or y 首先对 x 求值;如果 x 为真则返回该值;否则对 y 求值并返回其结果值。

请注意 and 和 or 都不限制其返回的值和类型必须为 False 和 True,而是返回最终求值的参数。 此行为是有必要的,例如假设 s 为一个当其为空时应被替换为某个默认值的字符串,表达式 s or 'foo' 将产生希望的值。 由于 not 必须创建一个新值,不论其参数为何种类型它都会返回一个布尔值(例如,not 'foo' 结果为 False 而非 ''。)

条件表达式(有时称为“三元运算符”)在所有 Python 运算中具有最低的优先级。

表达式 x if C else y 首先是对条件 C 而非 x 求值。 如果 C 为真,x 将被求值并返回其值;否则将对 y 求值并返回其值。

以上就是关于求高人解释下面该C语言程序,并说出得出此结果的由来全部的内容,包括:求高人解释下面该C语言程序,并说出得出此结果的由来、帮我看一下这个Java数组程序,我不理解int[] foo = arr[0] 和 foo = arr[1]为什么指向不同、在JavaScript中定时调用函数 foo() 如何写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10639606.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存