首页 > 其他分享 >c语言

c语言

时间:2023-11-27 10:02:35浏览次数:31  
标签:arr 语言 int add swap printf ptr

/*
 * @Author: huanjiang-lab [email protected]
 * @Date: 2023-11-10 13:51:34
 * @LastEditors: huanjiang-lab [email protected]
 * @LastEditTime: 2023-11-27 09:19:51
 * @FilePath: \c-learn\zhizhen.c
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
// C program to demonstrate that we can change
// local values of one function in another using pointers.

#include <stdio.h>
#define MAX 10

void swap(int *x, int *y)
{
    int temp;
    temp = *x;
    *x = *y;
    *y = temp;
}

void fun(int *height, int *age)
{
    int n = 10;
    *height = n * 10;
    *age = n * 2000;
}

int *createArray(int size)
{
    int i;
    int *arr = (int *)(malloc(sizeof(int) * size));
    for (i = 0; i < size; i++)
    {
        arr[i] = i * i;
    }
    return arr;
}

int *sumArray(int arr)
{
    return 0;
}

int add(int x, int y)
{
    return x + y;
}

int substract(int x, int y)
{
    return x - y;
}

int multiply(int x, int y)
{
    return x * y;
}

int divide(int x, int y)
{
    return x / y;
}

int module(int x, int y)
{
    return x % y;
}

int sum2DArray(int **arr, int *start, int *end)
{
    int sum = 0;
    // int *p = *arr;
    int *p = NULL;
    p = start;
    while (p < end)
    {
        sum += *p;
        p++;
    }
    return sum;
}

typedef int (*operation_fun)(int, int);

void main()
{
    int num = 0;
    int (*ptr_add)(int, int) = add;
    void (*ptr_swap)(int, int) = swap;

    int a = 100, b = 200;
    int sum = ptr_add(a, b);
    ptr_swap(&a, &b);
    printf("the result is %d\n", sum);
    printf("after swap a is %d,b is %d\n", a, b);

    operation_fun operations[] = {
        &add,
        &substract,
        &multiply,
        &divide,
        &module};

    // int (*operations[])(int, int) = {add, substract, multiply, divide, module};
    // int (*operations[])(int, int) = {&add, &substract, &multiply, &divide, &module};

    char *arr[] = {"add", "substract", "multiply", "divide", "module"};

    int result = 0;
    int i, j;
    for (i = 0; i < 5; i++)
    {
        result = operations[i](10, 20);
        printf("%s of two number result is %d\n", arr[i], result);
    }

    int arr1[3][4] = {0};
    int arr2[3][4] = {0};
    int arr3[3][4] = {0};
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 4; j++)
        {
            arr1[i][j] = i + j;
            arr2[i][j] = i - j;
            arr3[i][j] = i * j;
        }
    }
    int *ptr_arr_start = &arr2;
    int *ptr_arr_end = &arr2 + 1;
    sum = sum2DArray(arr2, ptr_arr_start, ptr_arr_end);

    // int a = 100, b = 200;
    // printf("before swap a is %d, b is %d\n", a, b);
    // swap(&a, &b);
    // printf("after swap a is %d, b is %d\n", a, b);
    // int p_height;
    // int p_age;
    // int *p_arr = createArray(MAX);
    // int i;
    // fun(&p_height, &p_age);
    // printf("height is %d and age is %d\n", p_height, p_age);
    // for (i = 0; i < MAX; i++)
    // {
    //     printf("%d\n", p_arr[i]);
    // }

    // int c = 30;
    // int *ptr1 = &c;
    // int **ptr2 = &ptr1;

    // printf("c is %d\n", c);
    // printf("ptr1 is %d\n", *ptr1);
    // printf("ptr2 is %d\n", **ptr2);
}

 

标签:arr,语言,int,add,swap,printf,ptr
From: https://www.cnblogs.com/dogingate/p/17858581.html

相关文章

  • Linux 本地安装R语言开发工具实现远程访问
    RStudioServer使你能够在Linux服务器上运行你所熟悉和喜爱的RStudioIDE,并通过Web浏览器进行访问,从而将RStudioIDE的强大功能和工作效率带到基于服务器的集中式环境中。下面介绍在Linuxdocker中安装RStudioServer并结合cpolar内网穿透工具,实现远程访问,docker方式安......
  • [编程]UML语言:理论之光与实践之惑
    UML介绍及现状UML(统一建模语言)是软件工程领域中具有悠久历史的一种模型化语言工具。它通过标准化的图形符号体系,使得软件系统的蓝图能够被更直观地表达出来。UML诞生于20世纪90年代,经过多年积累,已拥有完备的理论体系和广泛的实践应用。在理论上,UML被公认为是描述软件结构......
  • PubMedBERT:生物医学自然语言处理领域的特定预训练模型
    今年大语言模型的快速发展导致像BERT这样的模型都可以称作“小”模型了。KaggleLLM比赛LLMScienceExam的第四名就只用了deberta,这可以说是一个非常好的成绩了。所以说在特定的领域或者需求中,大语言模型并不一定就是最优的解决方案,“小”模型也有一定的用武之地,所以今天我们来......
  • C语言调用C++类成员函数讲解和实例
    原文:https://blog.csdn.net/LxXlc468hW35lZn5/article/details/1257010071、问题成因C语言与C++调用问题原因主要在于C编译器和C++编译器的不同。C是过程式语言,C编译器编译后,函数在符号库中就是函数名,没有其他任何附加信息。而C++是对象式语言,支持函数重载,C++编译器编译后,在符号......
  • C语言笔记7
    数组是一组有序的、类型相同的数据的集合,这些数据被称为数据的元素。一维数组的定义类型说明符数组名【正整型常量表达式】说明:类型说明符:数组的类型。数组名同变量名命名规则相同。常量表达式指明数组中元素个数,必须大于0.可以是数值常量、符号常量和字符常量。例如:floa......
  • gnome-terminal 因为语言打不开
    sudoaptinstalldconf-cliReinstallingterminaldconfreset-f/org/gnome/terminalsudoapt-getremovegnome-terminalsudoapt-getinstallgnome-terminalReconfiguringlocalesudolocale-gen--purgesudodpkg-reconfigurelocalesreboot......
  • C语言模拟进程状态
    精选状态图如下给出C语言执行状态图根据状态图,给出C语言代码解释这段代码定义了一个枚举类型ProcessState,包含了5个枚举值:NEW、READY、RUNNING、BLOCKED和TERMINATED。然后定义了一个ProcessState类型的变量process,并将其初始化为NEW。接着通过printf语句输出当前进程状态......
  • C语言【文件操作】
    C语言【文件操作】1、输入/输出流的定义。​ C语言中,文件输入/输出以流的方式进行。​ 读还是写,输入还是输出,是站在内存(程序)的角度来看的。从程序(内存)向数据源(如文件、网络等)传递数据的过程叫做读数据,读数据使用的路径叫做输入流,一般读数据的过程是一个解码的过程;从数据源(如文......
  • C语言模拟进程状态
    首先定义进程状态的枚举类型为ProcessStatetypedefenum{NEW,READY,RUNNING,BLOCKED,TERMINATED}ProcessState;而后据图中进程运行代码intmain(){ProcessStateprocess=NEW;printf("Processcreated.State:NEW\n");process=REA......
  • 《初学C语言第七天》
    ////写一个代码打印1-100之间所有3的倍数的数字//#include<stdio.h>//intmain()//{// inti=1;// for(i=1;i>=1&&i<=100;i++)// {// if(i%3==0)// {//  printf("%d\n",i);// }// }// return0;//}//写代码将三个整数数按从大到小输出//......