C语言学习(第十八课)初识函数3

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <windows.h>

//写一个函数,每调用一次函数,num的值就会加一。
//void ADD(int* p)
//{
//    (*p)++;
//}
//
//int main()
//{
//    int num = 0;
//    //每调用一次函数,num的值+1。
//    ADD(&num);//外部函数要改变程序内部的变量的值,必须取地址。进行取址调用。
//    printf("%d\n", num);
//
//    ADD(&num);
//    printf("%d\n", num);
//
//    ADD(&num);
//    printf("%d\n", num);
//
//    ADD(&num);
//    printf("%d\n", num);
//    return 0;
//}

//函数的嵌套调用

函数可以嵌套调用,但是不能嵌套定义。比如在test1函数内再定义一个test3函数。但是可以在test2函数内调用test1函数。
//int test1(int d)
//{
//    int e = 6;
//    return d + e;
//}
//
//int test2(int f)
//{
//    int g = 0;
//    g = test1(f)+10;//此处属于嵌套调用test1函数。得到一个16,再加十,得到g=26,然后返回到程序内。
//    return g;
//}
//int main()
//{
//    int a = 10;
//    int b = 0;
//    b = test2(a);
//    printf("%d\n", b);//输出值为26.
//    return 0;
//}


//函数的链式访问:

//int main()
//{
//    int a = 0;
//
//    a = strlen("abc");
//
//    printf("%d\n", a);
//
//    //strlen可以直接放进printf中使用。
//    //把一个函数的返回值作为另一个函数的参数,这叫做函数的链式访问。
//    printf("%d\n", strlen("abc"));
//
//    //再举一个简单的例子:
//    char arr1[20] = { 0 };
//
//    char arr2[] = "hello world";
//
//    strcpy(arr1, arr2);
//
//    printf("%s\n", arr1);//此处打印为“hello world”。
//
//    printf("%s\n", strcpy(arr2, arr1));//此处打印也为“hello world”。
//
//
//    //一个有趣的函数式:
//
//    printf("%d", printf("%d", printf("%d", 43)));//请问此处应该打印什么数值?
//
//    //答案是4321,因为printf:这些函数中的每一个都返回打印的字符数,如果发生错误则返回负值。43打印的字符数为2,所以返回值为2,2打印的字符数为1,所以返回值为1,最后打印出来的数值为4321.
//
//    return 0;
//}


//
//int main()
//{
//    int a = 2;
//    int b = 4;
//
//    //函数的声明:
//    //1、函数的声明:告诉编译器有一个函数叫什么,参数是什么,返回类型是什么,但是具体存不存在,无关紧要;
//    //2、函数的声明一般出现在函数的使用之前,要满足先声明后使用;
//    //函数的声明一般要放在头文件中的。
//    // 如果函数的定义放在程序前面,就不要进行声明。
//
//    int ADD(int, int);//此处告诉编译器有一个函数名字叫ADD,参数是int类型,返回类型是int类型,
//    
//    int c = ADD(a, b);//此处再对函数进行引用。
//    printf("%d\n", c);
//    return 0;
//}
//
//
函数的定义:函数的定义是指函数的具体实现,交代函数的功能实现。
此处对函数进行定义:
//int ADD(int x, int y)
//{
//    return x + y;
//}

//引用头文件:
#include "addsub.h"
//#include "add.h"
//#include "sub.h"
//如果想隐藏源文件中的代码,不想给其他人看到,可以使用编译器将源文件编译为静态库,然后再引用静态库即可。
//比如此处add.h和sub.h所对应的add.c和sub.c.可以使用静态库调用来实现隐藏代码的作用。
#pragma comment(lib,"add.lib")//静态库调用代码,此时add.lib在文件夹中。add.lib文件是无法直接打开查看的,只能通过代码进行调用,防止代码被其他人看到。


int main()
{
    int a = 20;
    int b = 10;
    int c = add(a, b);
    int d = sub(a, b);
    printf("%d\n%d\n", c, d);
    return 0;
}

//alt+enter可打开属性页

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值