在昨天做二维数组练习时,发现类似s[n][n]这类长度为变量的数组不能直接用初始化器{ }去全部初始化为0,所以了解到了 bzero这个函数
void bzero(void *s,size_t n)
功能:将s开始的n个字节清除成0
参数:s表示一块内存空间的首地址
n表示要清0的字节数
二维字符型数组
char s[3][4]
作用:批量处理字符串
初始化形式:
char s[3][10] = {"hello","world"};
赋值
gets(s[0]) // s[0]就是第0行,这个一维数组的数组名
昨天学习了字符串函数,在二维数组中字符串函数也可以是用,使用是应将s[0]s[1]s[2]等分别看成一个字符串形式的一维字符型数组
就拿用字符串进行排序来练习之前所学
#include<stdio.h>
#include<string.h>
int main()
{
char s[5][10],temp[10];
int i,j;
for(i = 0;i < 5;i++)
{
gets(s[i]);
}
for(i = 1;i < 5;i++)
{
for(j = 0;j < 5 - i;j++)
{
if(strcmp(s[j],s[j+1])>0)
{
strcpy(temp,s[j]);
strcpy(s[j],s[j+1]);
strcpy(s[j+1],temp);
}
}
}
for(i = 0;i < 5;i++)
{
printf("%s\n",s[i]);
}
return 0;
}
在字符串的使用过程中temp不在是之前的int类型而是一个一维数组,大小的比较、赋值都从< > =,变成了strcmp、strcpy
函数(function)
函数的思想:从上到下,逐步求解的过程
函数定义——把功能实现出来
类型标识符 函数名(形式参数)
{
函数体代码
}
(1)类型标识符:数据类型——表示函数要带出的结果的类型
注意:a.数组类型不能做函数返回结果的类型 b.如果函数不需要带出什么结果,一般设计为void,一般也不写return c.如果返回结果的类型与类型说明符不一致,以类型说明符为准,最终结果的类型都会转为类型说明符表示的类型 d.类型说明符如果不写,默认是int型
(2)函数名:标识符,命名规则符合标识符命名规则
(3)形式参数:表示该函数需要用到的数据——表明将来使用时,需要用到的实际参数该怎么写
注意:a.形参变量,必须明确指定类型,不能写成int a,b b.实参好形参对应关系:类型匹配,个数相同,顺序一一对应 c.函数传参——传递的是实际参数符值(值传递) d.如果不需要接收实际参数,形参一般设计为void表示空类型
(4)函数体代码:实现函数具体的功能的代码
函数定义的位置
1.main函数之前 2.main函数之后:需要在使用(函数调用)前,作函数声明
函数头+分号 就是函数声明
eg:实现两个数求和
1.先确定函数名
2.考虑函数需要用到哪些数据——形参
形参的写法:数据类型 形参变量名1,数据类型 形参变量名2 ...
3.处理数据
4.考虑要不要带出结果——返回值
用 return 语句;return(表达式)——表示从函数中返回,意味着函数执行结束
#include<stdio.h>
int add(int num1,int num2)
{
int sum;
sum = num1 + num2;
return sum;
}
函数调用
语法:
函数名(实际参数)
1.函数语句
2.函数表达式
3.函数参数
int main()
{
int a,b;
int sum;
scanf("%d %d",&a,&b);
sum=add(a,b);
printf("%d",sum);
return 0;
}