c语言函数ppt课件 c语言函数的知识点

c语言 请问这个PPT的意思是不是说这样用函数交换最终数组还是不会变的,为什么不变?

是的。这个PPT就是为了说明用void swap2(int x, int y)交换不了通过形参传入的元素。

成都创新互联公司是一家集网站建设,潘集企业网站建设,潘集品牌网站建设,网站定制,潘集网站建设报价,网络营销,网络优化,潘集网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

为什么交换不了?

因为void swap2(int x, int y)的形式参数是传值模式。

C/C++语言规定:以传值模式调用函数,在调用过程中,函数需先将形参做一个拷贝,然后基于新的拷贝进行计算。

如上例,执行调用swap2(a[0],a[1]),swap2会先将a[0]的值拷贝给x,将a[1]的值拷贝给y,然后在函数体内交换x、y的值,这样对a[0]、a[1]毫无影响。

怎样通过函数调用交换a[0]、a[1]的值?

答案是:通过传引用调用,即将函数声明为void swap2(int x, int y)。

C++语言规定:引用可以看作是变量的别名。别名类似于人的小名之类,一个人大名、小名虽不同,但都指的是这个人。

同样如上例,执行调用swap2(a[0],a[1]),swap2将x视作a[0]的别名、将y视作a[1]的别名,这样在函数体内交换x、y的值,实际上交换的是a[0]、a[1]的值。

引用是C++语言引入的特性,C语言中没有引用。若要用C语言实现通过函数交换a[0]、a[1]的值,怎么办?

答案是:模拟传引用调用,即将函数声明为void swap2(int* xp, int* yp)。

模拟传引用调用本质上仍是传值调用,只不过传入函数的是原始参数的地址。

同样如上例,执行调用swap2(a+0,a+1),a+0是a[0]的地址,a+1是a[1]的地址。相应地,swap将a[0]的地址值拷贝一份给xp,将a[1]的地址值拷贝一份给yp。函数体内,swap2通过xp、yp即a[0]、a[1]的地址的新拷贝,操纵a[0]、a[1]的值。

这种方式除了需要改造swap2的声明,还需改造swap2的函数体,即其实现。

C语言常用的函数有哪些

C语言库函数,常用库函数有:

1、scanf格式输入函数

2、printf格式输出函数

3、systemdos命令函数

4、sort排序

5、main主函数

6、fgets文件读取字符串函数

7、fputs文件写入字符串函数

8、fscanf文件格式读取函数

9、fprintf文件格式写入函数

10、fopen打开文件函数

11、getchar输入字符函数

12、putchar输出字符函数

13、malloc动态申请内存函数

14、free释放内存函数

15、abs求绝对值数学函数

16、sqrt求平方根数学函数

扩展资料

语言组成:

1、数据类型

C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。

2、常量与变量

常量其值不可改变,符号常量名通常用大写。

变量是以某标识符为名字,其值可以改变的量。标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。

3、数组

如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,方括内的索引值是从0算起的。

4、指针

如果一个变量声明时在前面使用 * 号,表明这是个指针型变量。换句话说,该变量存储一个地址,而 *(此处特指单目运算符 * ,下同。C语言中另有 双目运算符 *) 则是取内容操作符,意思是取这个内存地址里存储的内容。指针是 C 语言区别于其他同时代高级语言的主要特征之一。

参考资料来源:百度百科-函数

C语言基础 函数部分

主函数中for (i=0;i!='\0';i++)要改成for (i=0;i100;i++),scanf ("%c",str[i]);要改成scanf (" %c",str[i]);。

del_samechar函数中第二个for就不能用i变量控制了,不然第二个for循环完后i就越界了,第一个for就不再执行了还有,控制应该是str[i]!='\0'而不应该是i!='\0'。

其实把函数 del_samechar写成以下就可以了——

void del_samechar(char str[]){

int i,n;

for(n=i=0;str[j]=str[i];i++)

if(str[j]!=str[j-1] || j==0)

j++;

}


网站题目:c语言函数ppt课件 c语言函数的知识点
文章位置:http://pwwzsj.com/article/dospehi.html