大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
不知道你对函数这个东西有没有概念。在程序执行swap函数的时候,传进函数的两个值3,4分别赋值给了x,y,并x,y进行了值的交换。所以输出的是43。当你用printf的时候输出的是a,b的值,所以是34。可能是行得到的结果都是43,但是这个过程中要想实现输出43,必须使用指针才行。如果深入的解释一下就是从内存开始了。当你定义a,b的时候系统会给a,b分配内存,每个内存都有一个地址,数据就存放在带有地址的内存当中。那么在自定义函数里也是这样。x,y同样有自己的内存地址,并且和ab是不一样的,所以你做交换的时候交换的知识xy中的数据,并没有对ab做什么操作。所以在用printf输出数据的时候仍然是34。不知道你理解没有,还是先对内存的结构进行一下了解吧。
创新互联建站专注于定海企业网站建设,响应式网站,成都做商城网站。定海网站建设公司,为定海等地区提供建站服务。全流程按需网站制作,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务
第一,如果你没有看错就是你的书错了,只有int和char类型的函数不必声明
第二,C中可以不声明函数的条件是3个
1就是上面我说的
2.是被调函数定义在主调函数之前,可不必声明
3函数的外部已声明过了,个个主调函数中不必声明
对于第二点,很好解释,因为声明的目的在于告诉编译器有这么个自定义函数,返回类型是什么,如果被调函数定义在主调函数之前,那么编译器自然就知道了这个函数
你把f2和f1换下位置并去掉声明就明白了
再说一句,写函数声明是编写程序的良好习惯
请注意这是C程序,C官方声明标准编译器是Turboc 2。0
不要把C++的概念强加给C
我不是说VC++6不好,而是说既然是在学C,就要用标准的C编译器,只有标准C编译器才能正确的学习C的基础理论
关于c语言中函数调用问题解答如下:
首先如果是编译的这个代码那这个函数肯定被调用了,让你觉得没有调用是因为while循环没有被执行。
图中红色框内代码p1和p2经过赋值p1是肯定大于p2所以不满足while.的条件直接退出了函数。
你需要看看要实现啥在改一下。
在C语言中,实参数组在传递到函数形参中时,会退化为指针。也就是说mid函数中的a实际上是一个指针,而不是数组。尽管形参的声明是int a[],它实际上和int *a是一样的。
在32位程序中,一个指针占4字节,而一个int型也占4字节。因此sizeof(a)/sizeof(int)=4/4=1。