子函数的讨论

#include<stdio.h>
#include<stdlib.h>
void swap(int *p,int *q)
{
    int *m;
    *m=*p;
    *p=*q;
    *q=*m;

}
main()
{
    int a,b;
    scanf("%d,%d",&a,&b);
    swap(&a,&b);
    printf("%d,%d",a,b);
}
1,2
2,2请按任意键继续. . .
[Warning] C:\Users\Lenovo\Documents\C-Free\Temp\未命名1.cpp:17:2: warning: no newline at end of file    这个是警告语句,但翻译弄不明白
总结;在编译过程中虽然没弄明白警告语句,但通过编译结果不难看出,子函数中*m并没有把值传给*q,以至于输出的结果成了2个相同的q值,那么在定义int *m就是错误的,他无法将自身的值再传出去,造成了p的值没有传给q,因而他们的值都变成了q的值,则返还给主函数a,b的值就全是q的值。
#include<stdio.h>
#include<stdlib.h>
void swap(int *p,int *q)
{
    int *m;
    m=p;
    p=q;
    q=m;

}
main()
{
    int a,b;
    scanf("%d,%d",&a,&b);
    swap(&a,&b);
    printf("%d,%d",a,b);
}
1,3
1,3请按任意键继续. . .
总结;在这个子函数中是因为p与q的交换,是子函数中,也就是swap中的交换,而并没有改变main中a与b的值((没有交换main中a与b的地址)。因此在输出的结果中,a与b的值并没有受到子函数的影响,没有进行交换。
#include<stdio.h>
#include<stdlib.h>
main()
{
    int comp(int x,int y);//函数的说明
    int (*p)(int x,int y);//定义指向函数的指针变量p
    int a,b,c;
    p=comp;//使p指向comp函数
    scanf("%d,%d",&a,&b);
    c=(*p)(a,b);//调用comp函数
    printf("%d",c);
}
int comp(int x,int y)//定义comp函数
{
    int z;
    if(x>y)
    z=x;
    else
    z=y;
    return(z);
}
1,2
2请按任意键继续. . .
总结:在“定义指向函数指针变量p”时,并不清楚*p(int, int)的意义,*p后加(int,int)是做什么用的。谢谢老师。
时间: 2024-12-25 16:36:46

子函数的讨论的相关文章

tcl脚本学习十:proc 子函数的使用

lesson 10 :proc 子函数的使用 1. proc sum {arg1 arg2} { set x [expr $arg1+$arg2]; return $x } puts " The sum of 2 + 3 is: [sum 2 3]\n\n" //[语法] :proc procName { var1 var2 ... } {body}说明:1. proc 命令有三个参数:procName 是定义的过程名字:{var1 var2 ...}是输入.输出参数列表:body 是

Shell 语法 if 、 case 、for 、 while、 until 、select 、repeat、子函数

if语法 : if [ expression ]    then   commandselif [ expression2 ]   then   commandselse   commandsfi case 语法: case string1 in   str1)    commands;;   str2)    commands;;   *)    commans;;esac 循环语句 for 语法:    for  var in list do commands done     在此形式时,

matlab中同一文件定义子函数的方法

在matlab中一个.m文件中可以有多个的子函数,但仅能有一个主函数,并且M文件名必须和主函数相同在一个m文件中通常有两种定义子函数的方法: 1.嵌套定义 myfunc1会和主函数共享变量名.这种情况下,使用相同的变量名,如果不是故意为之,就不合适了.function mainFunc(... a = myfunc1();...function myfunc1()...end end2. 非嵌套定义function mainFunc()...a = myfunc1();...end functi

Oracle的over子函数的妙用

摘要 oracle的over 子函数可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序,其中PARTITION BY 为分组字段,ORDER BY 指定排序字段这对统计分析这类问题意想不到的效果. over函数的妙用 例1: 累计求和 select fdate 日期,total 金额,tax 税额, sum(total) over (order by fdate) 累计金额,sum(tax) over (order by fdate) 累计税额 from ( select fildat

matlab调试时子函数断点不起作用

matlab调试代码时总是遇到这样一个奇怪的问题,就是当我在主程序(.m脚本)中调用子函数并在子函数中设置断点,然后开始调试运行主程序... 发现主程序直接运行到结束而并没有在调用子函数的时候在所设置的断点处停下来,而且所设置的断点也被清除... 但是如果在主程序中调用相应子函数的地方设置断点,调试时在此处停一下然后在继续运行则可以在子函数中的断点停下... 这个问题困扰我挺长时间,虽然用第二种方法能够实现需要的调试功能,但是总是要在主程序停一下,有点麻烦 so, 有事问谷歌--you get

a+b(用子函数)

今天编的一个较简单的函数调用的程序 题目:a+b(用子函数) 程序 #include<stdio.h> void addition() { int a,b; scanf("%d %d",&a,&b); a=a+b; printf("%d",a); }-----------------------------------------//在子函数中进行a+b int main() { addition();------------------

ARM子函数定义中的参数放入寄存器的规则

关于ARM子函数定义中的参数放入寄存器的规则,网上也有很多文章和书籍介绍了,但是还有很多同学不太了解这个基础知识,这里摘取网上的一些介绍,简述一下. 对于ARM体系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure Call Standard),ATPCS主要是定义了函数呼叫时参数的传递规则以及如何从函数返回,关于ATPCS的详细内容可以查看ADS1.2 Online Books Developer Guide的2.1节. 简单

在子函数中应用malloc函数

一般在主函数中(main)使用malloc函数,然后在通过free函数进行释放内存,但有时候如果必须在子函数长调用malloc函数该怎样进行内存释放呢?在这里进行一下总结: 首先我们先来了解一下malloc函数的含义: malloc函数是为指针变量或数组分配某个可用空间的首地址,所以当分配一个首地址给一个指针变量时,这个指针变量指向的内容就发生了改变,指向了由malloc分配的那一块空间.如果要想改变一个指针变量的指向,在子函数中就要传递这个指针变量的地址,而不是它指向的空间. 有一种不合理的解

利用F#编写、理解Y组合子函数

赵劼的博客<使用Lambda表达式编写递归函数>中用C#实现了为函数求出 Y 组合子的函数.C#代码生涩,难以阅读,原代码如下: static Func<T, TResult> Fix<T,TResult>(Func<Func<T, TResult>, Func<T, TResult>> f) { return x => f(Fix(f))(x); } static Func<T1, T2, TResult> Fix