C语言之函数问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 15:12:50
3.指针变量作函数的参数
# Include “stdio.h”
main()
{
void chang() /*这里void 是什么意思,什么时候就要用到void * /到底是哪个返回值为0啊,是main还是chang啊,后面还有个return 0 又是谁返回为0 啊 不是和void为返回值 矛盾了吗??
int *p1,*p2,a,b,*t;
scanf(“%d,%d”,&a,&b);
p1=&a;
p2=&b;
chang(p1,p2);
printf(“%d,%d\n”,*p1,*p2);
return 0; /*这里return 0是什么意思,哪个值返回0啊, 是chang 还是main函数啊,我问别人说是 main 但是我觉得 好象以前用的都是 把函数值返回 用return ,比如象return v,就把V返回给chang …..

}
void chang(int *pt1,int *pt2)
{
int t;
if(*pt1<*pt2)
{
t=*pt1 ;*pt1=*pt2;*pt2=t;
}
return;
}
第一个return 0; 是把chang返回等于0了??第2个 return;是把main不返回值??那void chang又是代表 chang不返回值,不是和 第1个 返回0矛盾了`?~~就这3个划线的词语我始终要搞晕`~~`

11. 有这么一个
c=(*pa)+++*pb
等价于 c=((*pa)++)+*pb 为什么不是c=(*pa)+(++*pb)
最后结果为什么是那么样的我还是不清楚 ????++是从右到左,+是从左到右++和+的优先级就不一样的,++的优先级最高的。为什么这么结合,我觉得 第2个那么结合也多啊```?~~为什么就必须是第1个那么结合`~?

楼主你void change();少了个分号。。
这里的是先声明函数。void的意思就是告诉你这个你自定义的函数最终没有return。不返回主函数一个值。

至于后面的return 0;那是主函数main()的返回值。返回0是为了告诉电脑说你已经运行完了。至于0还是其他数。不是很重要的。
这个return是main()的返回值。和change()没有关系。

刚才说了这个return 是main。因为你的change已经定义成void,也叫空返回。所以没有return 值。

楼主一再的犯那个错···change定义成void。就是空返回值,也就是没有return 。所以你change里面多一个return 就是错的啦

最后一个。、
++的优先集比+高,所以优先要进行++运算。又因为++是从右到左。也就是左结合。是结合靠近左边的数。所以要和(*pa)++。如果和(*pb)结果的话,就变成了从左向右计算了···就不对了。。
等++运算后再做+。。楼主不清楚hi我吧···
基础知识有点乱!!!

第一个问题
VOID是表示这个函数没有返回值,既然函数是VOID类型,RETURN根本没必要写在上面~你这个例子是从书上抄的么?根本编译不通~

看来你是初学者,不要着急,慢慢来。

你是自定义一个交换函数。

首先:# Include “stdio.h”你的头文件就打错了。I是不能大写,符号也错。是#include<stdio.h>。

第二:void chang() 是放在主函数外面的。而且括号内少了型参,末尾少了分号。

第三:自定义函数中不需要ruturn,你不用返回任何值。

第四:scanf里面有逗号,输入时自己打上,不然得不到真确结果。建议你scanf里面不要加任何东西,就%d%d。不要%d,%d。有时逗号会忘记。

第五:变量的名字不要太长。习惯不好。要不用英译代替。像你里面的*pt1,就*p就可以啦,简单明了,不容易错。太复杂的变量容易自己出错。