C语言中t=x,x=y,y=t与t=*x,*x=*y,*y=t有什么不同?

作者&投稿:赖悦 (若有异议请与网页底部的电邮联系)
c语言中t=x;x=y;y=t;和t=x,x=y,y=t;的区别~

没有估计错的话,前者是错误语句,错在试图把指针赋给变通非指针变量t;后者是正确语句,把指针x指向的内容*x赋给t,把指针y指向的内容*y赋给x指向的内容*x,再把t赋给指针y指向的内容*y。从而完成了指针x、y指向的内容的值交换。

if(x>y)
x=x;
else
{t=x;
x=y;
y=t;}

就是说如果x比y大没什么变化。但是如果x小于等于y时,则x和y交换下。

没有估计错的话,前者是错误语句,错在试图把指针赋给变通非指针变量t;后者是正确语句,把指针x指向的内容*x赋给t,把指针y指向的内容*y赋给x指向的内容*x,再把t赋给指针y指向的内容*y。从而完成了指针x、y指向的内容的值交换。

#include <stdio.h>

void swapValue(int x,int y)
{
int t ;
t = x ;
x = y;
y = t ;
}

void swapPointer(int *x,int *y)
{
int t ;
t = *x ;
*x = *y ;
*y = t ;
}

int main ()
{
int a = 10 ;
int b = 100 ;
swapValue(a,b) ;
printf("a = %d b = %d\n",a,b) ; // a = 10 b =100

swapPointer(a,b) ;
printf("a = %d b = %d\n",a,b) ; // a = 100 b =10
return 0 ;
}

#include <stdio.h>

void swapValue(int x,int y)
{
int t ;
t = x ;
x = y;
y = t ;
}

void swapPointer(int *x,int *y)
{
int t ;
t = *x ;
*x = *y ;
*y = t ;
}

int main ()
{
int a = 10 ;
int b = 100 ;
swapValue(a,b) ;
printf("a = %d b = %d\n",a,b) ; // a = 10 b =100

swapPointer(a,b) ;
printf("a = %d b = %d\n",a,b) ; // a = 100 b =10
return 0 ;
}
简单的说前一个是值交换,并没有影响实参的改变,虽然形参改变了,但是函数调用完了之后栈空间就释放了,后者是地址交换,形参是指针类型,间接控制内存实参所指向的内存单元数据的交换! 希望能帮助到你

前者是变量互相赋值,后者是通过地址赋值

一个是是数值,一个是指针,在函数调用中很大不同

我也才学。。你贴的图,当括号里的值分别是-1,1的时候结果都一样,但内部过程不一样
内存中地址调用。。。
函数中int *x; *x 是指x指向的数;x是指向int数据类型的指针变量--地址


输入三个整数x,y,z,请把这三个数由小到大输出:用JAVA语言编程
2.程序源代码:main(){ int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if (x>y){t=x;x=y;y=t;} \/*交换x,y的值*\/ if(x>z){t=z;z=x;x=t;}\/*交换x,z的值*\/ if(y>z){t=y;y=z;z=t;}\/*交换z,y的值*\/ printf("small to big: %d %d %d\\\\n",x,y,z);} ...

c语言,三个数的最小公倍数
b,c,d);getchar();return 0;} int fun(int a,int b){ int x,y,t;if(a>b) {x=a;y=b;} else {x=b;y=a;} while(1){ if(x-y>y) {x=x-y;} else {t=x;x=y;y=t-y;} if(!y) {return (a*b)\/x;} } } 这是我的程序计算结果:1楼的直接卡了:望采纳!

C语言中---求给定取值范围内所有素数之和;例如输入:4,7 输出:[4 7...
修改最后一句话就可以了:include<stdio.h>void main(){int t,x,y,sum=0,i,n,flag;scanf("%d,%d",&x,&y);if(x>y){t=x;x=y;y=t;}for(n=x;n<=y;n++){for(i=2,flag=1;i<n;i++)if(n%i==0)flag=0;if(flag==1)sum+=n;}printf("[%d %d]范围内所有素数之和为%d...

x是什么意思c语言程序1ⅰp
1. x代表一个数值 在C语言中,x可以被用来代表一个数值,这个数值可以是整数、小数或者字符。例如 t x = 10; \/\/ x代表整数10 float x = 3.14; \/\/ x代表小数3.14 char x = 'a'; \/\/ x代表字符a 在这些例子中,x被用来代表一个具体的数值,这个数值可以被赋值、计算等操作。2. x代表...

C语言数组判断题
9. C语言中字符型、整型、实型都能用八进制表示 错,实型不可以 10. 设x、t均为int型变量,则执行语句"x=10;t=x&&x>10;"后,t的值为0 错,t=10 11. 在C语言中,变量必需先定义后使用 对 12. 在C程序中,%是只能用于整数运算的运算符 对 13. 在C语言中,逻辑“真”等价于不等于0...

下面有一些关于C语言问题,希望大伙儿侃侃,最好解释详细,谢谢呢?
if(x==y)t=x; \/\/这里没有加{},固IF语句范围只有第一个;为此 x=y;y=t;printf("%d,%d\\n",x,y);} 第五题:8 4 void f(int y,int*x) X是按地址传,而Y是按值传,当值传到函数里时,*x可以改变X的值,而Y不能返回.保持原来的值...第六题:这是C语言的内存动态分配,不是很...

c语言,输入三个不同的数字,按从从大到小输出
输出时反序z,y,x就行了,简洁完整并通过了调试的代码如下:#include<stdio.h> int main(){ int x,y,z,t;printf("请输入三个不同的数字,每输入一个数字用逗号隔开\\n");scanf("%d,%d,%d",&x,&y,&z);if(x>y) {t=x;x=y;y=t;} if(x>z) {t=x;x=z;z=t;} if(y>z) ...

计算机二级考试C语言知识点归纳
4)如何实现两个变量x ,y中数值的互换 (要求背下来) 不可以把 x=y,y=x; 要用中间变量 t=x;x=y;y=t。 5)如何实现保留三位小数,第四位四舍五入 的程序,(要求背下来) x=(int)(x*1000+0.5)\/1000.0 这个有推广的意义,注意 x = (int)x 这样是 把小数部分去掉。 第三章 特别要注意:c语言中是...

C语言的几个问题
t=x&&x>10中“>”的优先级最高先执x>10,但是x在“x=10”,已经被初始为10,不于10,所以返回为逻辑假即 0。而“&&”的优先级高于“=”所以先判断“x&&0”为逻辑假即为0。所以t被赋值为0。2.在C语言中,逻辑“真”等价于不等于0的数。什么意思啊?除零外的任何数1,2,3,4.。。

...运行后的输出结果是——。 #include main() {int x=10,y=20,t=...
if(x==y)条件不满足,t=x;这个语句不执行。后面的x=y; y=t;是无条件执行的(它不在 if 语句“罩着"的范围内)所以,最后输出:20,0

鹿泉市17154995388: c语言中 t=x;x=y;y=t;与{t=x;x=y;y=t;} 两条语句有什么区别? -
海界莱阳: t=x;x=y;y=t;//这是三条语句{t=x;x=y;y=t;} //这算一条,是复合语句功能是一样的,如果有人问它们的区别,应该是在考验对复合语句概念的认识复合语句用在只能出现一条语句的地方,如if(),for(),else,do的后面

鹿泉市17154995388: 在c语言中的x>y?(x=x):(t=x,x=y,y=t)是什么意思 -
海界莱阳: if(x>y) x=x; else {t=x; x=y; y=t;}就是说如果x比y大没什么变化.但是如果x小于等于y时,则x和y交换下.

鹿泉市17154995388: c语言中t=x;x=y;y=t;和t=x,x=y,y=t;的区别 -
海界莱阳: 两种写法语义相同,仅有一些语法不同.第一种写法三个表达式各自为单独语句.第二种写法表示为一个逗号表达式.两种写法的运算结果完全相同,一般使用第一种,第二种用在“只能写一句话”的情况下.比如在for语句中同时使用两个循环变量时怎么办?可以这样写:for(i = 0, j=100; i 0; i++,j--){……} 另外,逗号表达式还可以用做计算赋值,比如:x = (x = 99, x / 3) 逗号表达式返回值为最后一个子表达式的计算值.

鹿泉市17154995388: c语言中 t=x;x=y;y=t;与{t=x;x=y;y=t;} 两条语句有什么区别?
海界莱阳: 这样看没什么区别 最多就是多了一对大括号而已 但关键得看它在程序中的具体位置

鹿泉市17154995388: C语言中t=x,x=y,y=t与t=*x,*x=*y,*y=t有什么不同? -
海界莱阳: #include void swapValue(int x,int y) { int t ; t = x ; x = y; y = t ; } void swapPointer(int *x,int *y) { int t ; t = *x ; *x = *y ; *y = t ; } int main () { int a = 10 ; int b = 100 ; swapValue(a,b) ; printf("a = %d b = %d\n",a,b) ; // a = 10 b =100 swapPointer(a,b) ; printf(...

鹿泉市17154995388: t=x;x=y;y=t;是啥意思?
海界莱阳: 这是将 x, y 的值交换.先将x 的原值存进t中. 然后x 设成y的值, 最后再把t中那x的原值抄进y.

鹿泉市17154995388: 在输人两个数 按从小到大的顺序输出 程序中if(x>y) t=x; x=y; y=t 怎么解释这个语句 -
海界莱阳: j就是如果x>y,就交换x和y的值,t作为中间变量,=是赋值符号,t=x就是把x的值给t

鹿泉市17154995388: c语言编程题,利用t将x和y的值进行交换,求高手帮忙解答 -
海界莱阳: t=x 将x值赋给t 此时t=x=2; x=y 将y值赋给x 此时x=y=3 y=t 将t值赋给y 此时y=t=2;

鹿泉市17154995388: 关于C程序语句的理解问题
海界莱阳: 虽然你已经知道了t是x和y中间的变量,看来你还是不能够理解.打个比方吧: 现在又两杯水,x和y.想要把x和y的水互换就要一个空杯子来做中间传递,t就是这个空杯子. {t=x,x=y,y=t;}这句话的意思就是{先把x中的水给t;然后再把y中的水给x...

鹿泉市17154995388: main() { int x=10,y=20,t=0; if (x==y)t=x;x=y;y=t; printf(“%d,%d\n”,x,y); } -
海界莱阳: 你的程序里if后面没有加{}来标志范围,那么if只对它后面的一句起作用,碰到第一个分号就截止,第一个实际上只执行了x=y;y=t; 第二个实际上只执行了y=t

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网