c语言函数

C语言中auto,register,static,const,volatile的区别

走远了吗. 提交于 2019-12-05 21:24:14
1)auto 这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。 (2)register 这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。 (3)static 常见的两种用途: 1>统计函数被调用的次数; 2>减少局部数组建立和赋值的开销.变量的建立和赋值是需要一定的处理器开销的,特别是数组等含有较多元素的存储类型。在一些含有较多的变量并且被经常调用的函数中,可以将一些数组声明为static类型,以减少建立或者初始化这些变量的开销. 详细说明: 1>、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与栈变量和堆变量的区别。 2>、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。 3>当static用来修饰全局变量时,它就改变了全局变量的作用域,使其不能被别的程序extern,限制在了当前文件里,但是没有改变其存放位置,还是在全局静态储存区。 使用注意: 1>若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度; 2>若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量

C语言I博客作业10

岁酱吖の 提交于 2019-12-05 20:28:07
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 C语言I作业10 我在这个课程的目标是 能够编辑出一个能让我哥称赞的游戏 这个作业在那个具体方面帮助我实现目标 能够更好的运用for循环编写代码 参考文献 PTA 1.PTA实验作业 1.1编程打印空心字符菱形 本题目要求读入菱形起始字母和菱形的高度,然后输出空心字符菱形。所谓“空心菱形”是指:每行由两端为字母、中间为空格的字符串构成,每行的字符串中心对齐;上半部分相邻两行字符串长度差2,且字母从给定的起始字母逐一递增;下半部分与上半部分对称。 输入格式: 输入在一行中给出起始字母(范围为英文大写字母A-G)和菱形的高度(为不超过10的奇数)。 输出格式: 输出空心字符菱形。 输入样例: B 5 输出样例: B C C D D C C B 1.1.1数据处理 数据表达: 定义了整形变量n,i,j;字符变量ch;i,j用于控制循环,n为输入的字符行数,ch为输入的字符 数据处理: 定义 n为输入的字符行数,i,j控制循环,ch为输入的字符 for(i=-n/2;i<=n/2;i++) { for(j=1;j<=|i|;j++) { 输出一个空格 } 输出字符 if |i|!=n/2 { for(j=(n/2-|i|)*2-1;j>0;j++) { 输出一个空格 } 输出字符 if i>=0 then ch-=2 } 换行

C语言 sizeof()用法介绍

爱⌒轻易说出口 提交于 2019-12-05 19:08:20
本文 转自https://www.cnblogs.com/huolong-blog/p/7587711.html 1. 定义 sizeof是一个操作符(operator)。 其作用是返回一个对象或类型所占的内存字节数。 2. 语法 sizeof有三种语法形式: 1) sizeof (object); //sizeof (对象) 2) sizeof object; //sizeof 对象 3) sizeof (type_name); //sizeof (类型) 对象可以是各种类型的变量,以及表达式(一般sizeof不会对表达式进行计算)。 sizeof对对象求内存大小,最终都是转换为对对象的数据类型进行求值。 sizeof (表达式); //值为表达式的最终结果的数据类型的大小 举例: int i; sizeof(int); //值为4 sizeof(i); //值为4,等价于sizeof(int) sizeof i; //值为4 sizeof(2); //值为4,等价于sizeof(int),因为2的类型为int sizeof(2 + 3.14); //值为8,等价于sizeof(double),因为此表达式的结果的类型为double char ary[sizeof(int) * 10]; //OK,编译无误 1. 基本数据类型的sizeof 这里的基本数据类型是指short

C语言学习笔记———函数

十年热恋 提交于 2019-12-05 15:38:01
  前面介绍了C语言一些基本的语法组成,无非就是表达式,语句,运算符。这些都是元素可以组合成C语言程序的基本单位,函数。这个函数和数学里的函数,还是有区别的。函数在C语言里面,是对某一个过程的封装,也是对代码的一个复用。还是简单的介绍一下,函数的一些常见用法吧。   大家多少都学习过数学,我们先了解一下,C语言里面,如何表达数学中的函数。先来看一个简单的例子,求一个数的绝对值。    double y(double x) { return x >= 0 ? x : -x; }   求绝对值的过程很简单,当x是正数的时候,函数值就是它本身,x为负数时,函数值就是它的相反数。下面我们来介绍以上代码的含义。其中 double y(double x) 是函数头,也叫函数原型,相当于函数的一个身份证,从左往右,第一个double表示了函数的返回值类型,返回值是我们要通过这个函数得到的值,返回值类型等同数据类型,只不过它还可以是void,空类型,就是说我们不打算通过这个函数得到什么值,只是希望它能帮我们做一些事。括号里的是参数列表,至于如何写参数,例子里已经出现了写法,这里不必赘述。   return 后面的内容,是函数要返回的值,返回值类型一定和return后面返回的值类型相同。至于这个表达式怎么写,写法很多。理论上,只要表达式的值和返回值类型相同。那么这个返回表达式就是合法的

C语言strcat()函数:字符串连接(拼接)

巧了我就是萌 提交于 2019-12-05 13:54:20
C语言strcat()函数:字符串连接(拼接) C语言 strcat() 函数用来将两个字符串连接(拼接)起来。 头文件:string.h 语法/原型: char*strcat(char* strDestination, const char* strSource); 参数说明: strDestination:目的字符串; strSource:源字符串。 strcat() 函数把 strSource 所指向的字符串追加到 strDestination 所指向的字符串的结尾,所以必须要保证 strDestination 有足够的内存空间来容纳两个字符串,否则会导致溢出错误。 注意:strDestination 末尾的 \0 会被覆盖,strSource 末尾的 \0 会一起被复制过去,最终的字符串只有一个 \0 。 返回值:指向 strDestination 的指针。 【实例】使用C语言 strcat() 函数将用户输入的两个字符串拼接在一起。 #include <stdio.h> #include <string.h> int main(){   char str1[101] = { 0 };   char str2[50] = { 0 };   gets(str1);   gets(str2);   strcat(str1, str2);   puts(str1);  

[C语言]小知识点 持续更新

拜拜、爱过 提交于 2019-12-05 11:42:33
2019-11-24 1.如果输入: printf("%d",pow(2,1)); 会得到0; 这和我们的日常判断不相符! 然而,改成: printf("%.0f",pow(2,1)); 就可以成功输出“2”; 因此, 注意pow函数返回的是浮点数,不可以使用整型变量返回pow函数。 来源: https://www.cnblogs.com/life-blog-of-Dolly/p/11923024.html

C语言程序运行时的一些细节

落花浮王杯 提交于 2019-12-05 10:02:23
本章可以看作是 《Unix 环境高级编程》Ch7 的笔记。 C 程序运行的开始和结束 一个可以运行的 C 语言总要有一个 main 函数,main 函数现在的完整定义是 int main(int argc, char *argv[] ) ,现在的 C 语言已经不允许写成 void main() 的形式了,main 函数必须有返回值,如果 main 函数没有返回值,那么编译器会在最后默认加上 return 0 的语句。 C 语言从 main 函数开始运行是一个约定俗成的东西,甚至影响了后面的好多语言也是从类似名为 main 函数的入口开始运行程序。但是当内核执行 C 语言程序的时候,并不是直接调用了 main 函数,而是先通过一个特殊的启动程序 (a special start-up routine),这个特殊的启动程序将作为程序的起始地址开始运行,启动程序会从内核中获取命令行参数和环境变量值,然后去调用 main 函数。 一个进程的正常终止是有五种方式: 从 main 函数返回 调用 exit 函数。 调用 _exit 函数或者 _Exit 函数。 最后一个线程从其启动例程返回。 从最后一个线程调用 pthread_exit 。 所以,这个启动的例程实际上调用的是 exit(main(argc, argv[])) 这个函数。 退出程序有三种分别是 exit() _exit()

C语言作业09

坚强是说给别人听的谎言 提交于 2019-12-05 06:18:27
问题 答案 这个作业属于那个课程 C语言程序设计 这个作业要求在哪里 https://i.cnblogs.com/EditPosts.aspx?opt=1 我在这个课程的目标是 在学好C语言编程的基础上,掌握多种编程方法 比如JAVE,命令格形式编码,能偶熟练各种编程操作,精通编程知识 这个作业在那个具体方面帮助我实现目标 方便练习并且掌握作业提交,比如利用表格清楚地阐述本次的作业只要内容,能够又快又好地完成编程作业和代码作业 参考文献 提问的智慧。C Primer Plus 百度文库 1.PTA实验作业 .引用 1.1 7-1 打印九九口诀表 (15 分) 题目内容描述:本题要求对任意给定的一位正整数N,输出从1 1到N N的部分口诀表。 1.1.1数据处理 数据表达:整形变量 N,a,b=.,i=0; 数据处理: 表达式——a = N % 10; b=a+b;N = N / 10;while语句。 函数参数:主调函数#include<stdio .h>,被调函数为scanf;,被调函数的类型为整形,形参:a,N ,实参:i,b 整形 1.1.2实验代码截图 1.1.3 造测试数据 输入数据 输出数据 说明 12 2 3 该数字俩位数,且各位数字之和为3 451 3 10 该数字三位数,且各位数字之和为10 321 3 6 该数字三位数,且各位数字之和为6 1.1.4

C语言学习笔记--void

我是研究僧i 提交于 2019-12-05 05:10:45
void真正发挥的作用在于:   (1) 对函数返回的限定;   (2) 对函数参数的限定。 先给一个例子 定义函数 返回值 函数名(参数1,参数2,参数3,.......) {内容} int sum(int a,int b) { int c; return c;} 其中第一个int是返回值 就是别的函数调用此函数时这个函数给他的一个值。 如果调用时不需要返回值,则函数写为 void sum(int a,int b){....} 此时函数没有返回值 如果不需要参数 则int sum(void){...} 此时void的意义为空,就是没有参数的意思 如果都不要 则为void sum(void); ------------------------------------------------------------------------------------------------------------------------------------------------ *extern的用法 如果需要在一个源文件中引用另外一个源文件中定义的变量,我们只需在引用的文件中将变量加上 extern 关键字的声明即可。 #include < stdio.h > /* 外部变量声明 */ extern int x ; extern int y ; int addtwonum ( )

c语言博客作业04--数组

旧巷老猫 提交于 2019-12-04 18:56:52
0.pta展示总分 1.本章学习总结 1.1学习内容总结 1.1.1基础知识点总结 数组的定义:数组是一组具有相同类型的数据的集合,这些数据被称为数组元素。格式为:类型名 数组名[常量表达式]。数组所占字节数为元素个数与基本类型所占字节数的乘积。 数组的初始化:数组初始化元素值默认为0,没有初始化元素值为随机。例如在int a[5]={1,2,4};中,a[4]的值为0,而在int a[5];中,a[4]的值为不确定的随机数。 fegts()函数在输入结束处自动输入'\0' 1.1.2数组各种做法总结 1.数组中如何查找数据 按顺序查找:对于数组中的元素逐个排查,看是否有与所要查找的数据相等的元素。但对于元素非常多的数组来说,效率很低。 二分查找法:若一组数据为按大小顺序排列,则可用此方法。其做法为:找出左边界和右边界,并找出中间元素与所找数据进行比较,如果相等则找出,若不相等,则根据大小判断其中一个边界换为中间元素的上一个元素或下一个元素,继续查找,直到找出或最终也没找到。 二分查找例子: 2.在数组中插入数据 寻找所要插入所给数据的位置,将其与其后数据向右移动一个单元,并将所给数据插入此位置。例如在从小到大的一组数据中插入一个数据且插入后仍是从小到大排列的做法。要注意数组长度。 void insertArray(int a[], int n, int data) { int i