c语言函数

C语言学习之基本语法三

元气小坏坏 提交于 2019-11-29 08:30:42
int f(int a,int b) { float c; c=a+b; return c; } 关于函数需要说明的是,假如返回变量的类型与函数类型不一致时,返回时系统会自动进行类型转换,以函数返回值的类型为最终结果,即例题中会将变量c的值转换成整型返回,变量c本身的类型不变。 如果函数是缺省的,系统规定默认为int型。 调用语句中出现的参数称为实参,被调函数中的参数称为形参。在函数定义时,系统是不给形参分配内存空间的,只有当函数调用发生时,实参传给形参,这时才给形参分配内存空间。 函数声明 编译一个C语言源文件是从第一行开始扫描到最后的,你调用一个函数,之前必须定义或申明过这个函数。 被调函数的定义如果出现在主调函数的后面,则主调函数中必须在调用之前对被调函数进行声明,否则系统会认为被调函数没有定义就使用。 这样是合法的: void main(){ float f(float x,float y); //在主调函数中声明被调用函数,格式:函数头+“;” } float f(float x,float y){ } 在以下三种情况下,主调函数中不再需要对被调函数进行声明: (1)当被调函数的返回值类型是整型(int)时,不需要进行函数声明。 void main(){ f(1,2); } int f(int x,int y){ } (2)当被调函数的定义出现在主调函数之前

重学C语言之结构体

我与影子孤独终老i 提交于 2019-11-29 02:57:11
概念 结构体是一种构造类型,由若干个成员组成,成员可以是基本数据类型,或是另一个结构体 声明结构体 struct 结构体名 { 成员列表 }; 结构体名表示结构的类型名。 声明一个结构体表示创建一种新的类型名(自定义数据类型),然后用类型名定义变量。 struct Product { char name[10]; char shape[10]; char color[10]; float price; } 使用结构体定义变量有三种方式 第一种:声明结构体类型,再定义变量 struct Product p1; struct Product p2; p1和p2是结构体变量名,这两个变量具有相同的结构 类比: 类型名 变量名 int a; | | struct Product p; struct Product整体表示一种数据类型 定义结构体变量后,系统会为其分配内存单元 第二种:声明结构体类型时,同时定义变量(可以定义多个变量) struct 结构体名 { 成员列表 } 变量名列表; example: struct Product { char name[10]; char shape[10]; char color[10]; float price; } p1, p2; 第三种:直接定义结构体类型变量(匿名结构体,没有结构体名称) struct { 成员列表 } 成员变量;

【C/C++】复合类型(自定义类型)

杀马特。学长 韩版系。学妹 提交于 2019-11-29 00:50:57
gcc编译器 gcc(GNU Compiler Collection,GNU 编译器套件),是由 GNU 开发的编程语言编译器。gcc原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,gcc同样适用于微软的Windows。 gcc最初用于编译C语言,随着项目的发展gcc已经成为了能够编译C、C++、Java、Ada、fortran、Object C、Object C++、Go语言的编译器大家族。 编译命令格式: gcc [-option1] ... <filename> g++ [-option1] ... <filename> 1 2 命令、选项和源文件之间使用空格分隔 一行命令中可以有零个、一个或多个选项 文件名可以包含文件的绝对路径,也可以使用相对路径 如果命令中不包含输出可执行文件的文件名,可执行文件的文件名会自动生成一个默认名,Linux平台为a.out,Windows平台为a.exe gcc、g++编译常用选项说明: 选项 含义 -o file 指定生成的输出文件名为file -E 只进行预处理 -S(大写) 只进行预处理和编译 -c(小写) 只进行预处理、编译和汇编 C语言是不跨平台的,用Java用习惯的我突然回到C,有点不适应,用SpringBoot完成的Java项目,打成jar包

Python中调用c语言

时光总嘲笑我的痴心妄想 提交于 2019-11-28 22:44:37
Python中有时需要调用c程序中的函数。使用ctype库可以很方便地调用c语言。现说明方法,以及注意事项。 c程序编译为.so文件: 我们需要的c语言文件为 test.c ,要从其中调用func(x,y)函数。 gcc -fPIC -shared test.c -o test.so 导入该文件 随后,我们在python中导入该test.so文件,方法如下: import os from ctypes import * p = os.getcwd() + '/test.so' # 文件路径 f = CDLL(p) # 用CDLL方法读取该.so文件。 调用函数 这时我们已经读导入了该文件,可以使用文件中的函数了。 现在分情况讨论,如果func中传入的 参数均为整数 ,那么比较简单: a = 3 b = 4 f.func(a, b) 如果传入的 参数为浮点数 ,那么得提前声明一下变量: c = c_float(5.5) d = c_float(6.66) f.func(c, d) 如此,便可以正确调用。 来源: https://www.cnblogs.com/guiguiguoguo/p/11431578.html

C语言作业I博客作业05

房东的猫 提交于 2019-11-28 22:25:45
C语言I博客作业05 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9825 我在这个课程的目标是 学会自定义一个函数,了解其基本用法 这个作业在那个具体方面帮助我实现目标 自定义函数的使用,阶乘函数的编译 参考文献 《C语言程序设计》《PTA实验指导》百度百科 1.PTA实验作业 1.1 水仙花数判断 题目内容描述 本题要求实现一个函数,判断任一整数是否为水仙花数(必须是三位数,且数的每一位上数字的立方和与数本身相等)。例如153=1^3+5^3+3^3=1+125+27=153,而1或155则不是水仙花数。如果是水仙花数,则函数返回1,否则返回0. 函数接口定义: int func(const int N); 其中N是用户传入的参数。N的值不超过int类型的范围。如果参数N是水仙花数,则返回1,否则返回0。 1.1.1数据处理 数据表达:用了sum和x等整形变量,给x定义赋值。 数据处理:表达式为sum += (x % 10) * (x % 10) * (x % 10),开始输入n,通过函数func,判断是否为是否为素数,是则输出1,否则输出0. 函数参数:主调函数的名称main,被调函数的名称func,被调函数的类型为整型,为形参。 1.1

C语言关键字auto、static、typedef、volatile、enum、const

拥有回忆 提交于 2019-11-28 20:17:47
C语言关键字auto、static、typedef、volatile、enum、const   关键字,又叫保留字,是编译器能识别的特殊单词,每种计算机语言都会有其特定的关键字,C语言中有 32 位关键字。 关键字分类 32个关键字每个都有不同的意义,大体上根据其意义可以分为以下几类(下划线表示不同分类中有交集):  1)非常见:auto、register、volatile、goto  2)存储相关:const、extern、register、volatile、static、auto、signed、unsigned  3)数据类型:char、short、int、float、long、double、struct、union、enum、void  4)逻辑控制:if、else、for、while、do、break、continue、return、default、switch、case、goto  5)特殊用途:sizeof、typedef (1).auto 自动变量   这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。    eg: (2).static  1).static全局变量  当一个进程的全局变量被声明为static之后,它的中文名叫

0基础自学C语言视角:标准IO_fopen( )、fclose()

倾然丶 夕夏残阳落幕 提交于 2019-11-28 19:08:14
思前想后一个月,我终于敲下了我的第一篇开山之作。 博客千千万,我的博客首先记录的是学习时候的理解,用于给自己翻阅查找,现在主要研究的是 C语言 和 STM32 。如果能帮到你,那是最好的,假如我写的东西有错误欢迎指正,所以请反复对比,仅作参考。其次,这里不仅记录学习,也会写下我在朋友圈不能公开的想法和秘密! 马上进入主题 一、什么是文件?   我相信,就算接触过C语言的文件输入输出的人,还会回答:文件不就是鼠标点击的东西嘛!其实不全对,因为在C语言程序中,文件有着更广泛的定义: 文件 通常 是在磁盘或硬盘上的已命名的储存区。 要看到是通常,那么就说明会有不寻常的。对于C程序来说,设备也可以看成是文件!例如屏幕和键盘。看到这里的朋友会有一个疑问:那么C程序和语言有什么关系呢?文件对C程序有什么重要性呢? 简单地理解,文件能够输入一些必要的数据给程序使用以及程序输出数据到文件保存。   1.1 文件的两种形式   在C程序看来,文件只有两种形式。   文本文件 二进制文件 文本文件即里面的数据都是字符。 字符传化成对应的ASCII码存放在内存中。如“ABC”就分别是‘A’、'B'、'C'存放 二进制文件即里面的数据直接存放在内存中。 无需转换为ASCII码,可以理解为机器语言(只有0和1)。例如整数1000转换为二进制为‭0010 0111 0001 0000‬,直接存储在内存中。 二

C语言I博客作业10

本小妞迷上赌 提交于 2019-11-28 19:07:04
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10095 我在这个课程的目标是 熟练地掌握运用C语言,锻炼思维逻辑能力,为以后其他语言的学习打好基础. 这个作业在那个具体方面帮助我实现目标 学习循环结构程序设计与用穷举法解决问题 参考文献 《C语言程序设计》《C Primer Plus》百度百科 伪代码基本写法 1.PTA实验作业 1.1 输出三角形字符阵列 本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列. 输入格式 :输入在一行中给出一个正整数n(1≤n<7). 输出格式 :输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格. 1.1.1数据处理 数据表达 :用了变量letter,i,j,n.letter通过赋值得到,n通过直接输入得到,i,j作为循环控制变量.letter类型为字符型,i,j,n全为整型. 数据处理 :letter表示大写字母,i,j作为循环控制变量,n表示输入的正整数. 所用表达式 :letter='A';letter=letter+1; 流程结构 : Begin 输入一个正整数n for i←1 to n { for j←i to n-i+1 { printf("%c "

c语言练习27——递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

夙愿已清 提交于 2019-11-28 16:22:56
#include<stdio.h> #include<stdlib.h> //题目:递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 int main(){ int i,l; char a[100]; while(1){ printf("请输入一串字符:"); for(i=0;i<100;i++){ scanf("%c",&a[i]); if(a[i]=='\n') break;} l=i; printf("倒序输出结果为:"); for(i=l-1;i>=0;i--) //a[l]是换行符,这里不用输出 printf("%c",a[i]); printf("\n________________________________\n"); } return 0; } 来源: https://www.cnblogs.com/gougouwang/p/11415310.html

C语言学习笔记

[亡魂溺海] 提交于 2019-11-28 14:57:05
前言:此篇blog主要为了回顾C语言的一些基本知识点,稍微梳理一下 C语言的一些基本概念及结构。并不作具体讲解。 1.1基本结构 (1)main是主函数的函数名,每个程序都必须有且只有一个main函数;程序总是从main函数开始执行。 (2)每个c语句以分号结尾。 (3)使用标准库函数应在程序开头一行写#include<stdio.h> (4)C语言注释的两种形式: a.单行注释" // " b.多行注释" / * 注释内容 * / (5)scanf()输入函数: 应用方式scanf("%d%d",&a,&b); &是地址符,“&a”的含义是“变量a的地址”; 若双引号中为"%d,%d"形式,则输入时也应加逗号; (6)函数是c程序的主要组成部分,一个函数包含两部分: 函数首部和函数体: 函数首部组成: 函数类型 函数名 (函数参数类型 函数参数名 函数参数类型 函数参数名) eg:int max (int x, int y) 函数体亦包含两部分:声明部分和执行部分,两部分都在{}内; 函数体{ 声明部分(对变量,函数等的声明) 执行部分(要实现的一些操作和功能) } 2.1数据的表现形式 (1)符号常量和常变量的区别: a.符号常量: 用 # define 指令,指定用一个符号名称代表一个常量 eg:#define PI 3.1416 // 注意行末没有分号 /*经过以上的指定