首页 > 其他分享 >C语言第六天

C语言第六天

时间:2023-05-29 23:01:10浏览次数:50  
标签:va ap int list ++ ret C语言 第六天

1、函数参数顺序点

  1、语句结束时值改变

  2、&& || , ? :等运算符、

  3、函数参数传递时的求值顺序 

int k = 1;
func(k,k++);

  那K+1,K是等于什么呢,函数参数的运算应该是从 右到左,所以K++的K应该是1,先输出后运算,而K应该是2

 int i = 0;
 printf(“%d,%d,%d”,i++,i++,i++);2 1 0 
 printf(“%d,%d,%d,%d,%d”, ++i, ++i,i++,++i,i++); 5 5 2 5 0 

2、带参数的main函数和命令行参数

  main(int argc,char *argv[])

3、可变参数列表

  1、#include<stdarg.h>定义了相关方法

  2、结构体定义

typedef struct{
      char *ao;
      int offset;
}va_list;
控制函数
void va_start(va_list ap,last);ap指向可变参数表的中的第一个参数
type va_arg(va_list ap,type);获取参数,第一个参数ap,第二个参数是要获取的参数的指定类型,返回这个指定类型的值,并且把ap的位置指向列表的下一个变量文职
void va_end(va_list ap);关闭ap
void va_copy(va_list dest,va_list src);

  相关代码示例(不太懂其实,有需要用到再看看)

#include<stdio.h>
#include<stdarg.h>
float avg(int n,...)
{
    va_list args;
    int i;
    float  ret = 0.0;
    
    va_start(args,n);
    for(i = 0;i < n;i++)
    {
        ret += va_arg(args,int);
    }  
    va_end(args);
    ret = ret / n;
    return ret;
}    
int main()
{
    printf("averge = %f\n",avg(5,1,2,3,4,5));
    printf("averge = %f\n",avg(3,1,2,3));

    return 0;
}

4、返回指针值的函数

  1、int * a(int x,int y);

5、函数的指针

  1、 int (*a)();

  2、是函数的物理入口地址

  3、类型是指针变量所指函数的返回值类型

int main(){
     int swap(int *x,int *y);
     int a,b;
     int (*p)();
     p = swap;
     scanf("%d%d",&a,&b);
     if(a<b) (*p)//p  (&a,&b);
     printf("%d %d",a,b)
     return 0;      
}

  另一个示例

#include  <stdio.h>
int max(int x, int y)
{int z;
  z=x>y?x: y;
  return(z);}
int min(int x, int y)
{int z;
  z=x<y?x: y;
  return(z);}
int add(int x, int y)
{int z;
  z=x+y;
  return(z);}

int process(int x, int y, int (*fun)( ) )
{int result;
  result=(*fun)(x, y);
  printf("%d\n", result);}
main( )
{int a, b;
  printf("enter  a  and  b:");
  scanf("%d, %d", &a, &b);
  printf("max=");
  process(a, b, max);
  printf("min=");
  process(a, b, min);
  printf("add=");
  process(a, b, add);}

  

标签:va,ap,int,list,++,ret,C语言,第六天
From: https://www.cnblogs.com/gunancheng/p/17441869.html

相关文章

  • 逍遥自在学C语言 | 揭开while循环的神秘面纱
    前言循环是一种重要的控制结构,可以使程序重复执行一段代码,直到满足特定条件为止。在C语言中,while和do-while是两种常用的循环结构,本文将详细介绍这两种循环的用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习......
  • C语言static篇
    C语言static篇变量#include<stdio.h>voidfunc(){inta=0;printf("%d\t",a);staticintb;printf("%d\n",b);}intmain(){func();return0;}#include<stdio.h>voidfunc(){inta=1;......
  • 二叉排序链表C语言代码实现
    #include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedefstructBSTNode{intdata;structBSTNode*lchild;structBSTNode*rchild;}BSTNode,*BSTree;BSTNode*InitNode(intdata){BSTNode*node=(BSTNode......
  • C语言课程设计题目[2023-05-29]
    C语言课程设计题目[2023-05-29]C语言课程设计题目一、设计要求与设计报告设计要求1.任意选定以下一个题目完成2.模块化程序设计3.锯齿型程序书写格式4.必须上机调试通过设计报告格式1.设计目的2.总体设计(程序设计组成框图、流程图)3.详细设计(模块功能说明(如函数功能、入......
  • c语言,函数的址传递例子
    编码如下:#include<stdio.h>voidswap(int*x,int*y){inttmp;tmp=*x;*x=*y;*y=tmp;};intmain(){inta=4;intb=5;printf("befer\n");printf("a=%d\n",a);printf("b=%d\n",b);swap(&am......
  • c语言代码怎么输入文字
    在C语言中,可以使用printf函数来输出文本信息到终端。如果需要从用户那里获取输入的文本信息,则可以使用scanf函数。以下是一个简单的示例代码:#include<stdio.h>intmain(){charname[20];printf("请输入您的姓名:");scanf("%s",name);printf("您好,%......
  • 用C语言为python写C扩展2
    spammodule.c#include<Python.h>staticPyObject*spam_system(PyObject*self,PyObject*args){constchar*command;intsts;if(!PyArg_ParseTuple(args,"s",&command))returnNULL;sts=system(command);......
  • C语言编程—枚举
    枚举是C语言中的一种基本数据类型,用于定义一组具有离散值的常量。它可以让数据更简洁,更易读。枚举类型通常用于为程序中的一组相关的常量取名字,以便于程序的可读性和维护性。定义一个枚举类型,需要使用enum关键字,后面跟着枚举类型的名称,以及用大括号{}括起来的一组枚举常量。......
  • 初识C语言:从菜鸟变大牛(3)
    上篇我们讲解了变量、常量、字符串、转义字符、注释。那么我们继续来学习C语言的一些基本知识,同样,知识也是点到为止,不会很深入,后面我会发布更深层次的知识。(注:本篇的内容稍稍有点多,大家可以分批学习)1.选择语句在C语言中有时有多种分支,我们就需要用到选择语句在C语言中有两种常见的......
  • 常见项目——C语言实现2048小游戏(附源码和可执行文件)
    1.实现效果展示1.1界面图片说明:进入下面各页面后均可通过按键“q”来退出。1)菜单页2)开始游戏页3)游戏规则页4)按键说明页5)退出游戏页1.2视频展现戳此处查看视频演示1.3游戏源码及可执行文件(exe)下载支持作者,请关注公众号“优秀物联人”回复“2048小游戏”获取下......