文章目录
一维数组
1、 定义:
相同数据类型的集合,一段连续内存存储。
2、数组写法:
int buf [10] ;
数据类型 数组名 定义存储空间
例如:char buf[20]=”hello”;
int buf[5]={1,2,3};
3、数组下标,从0开始
char buf[20]=”hello”;
buf[0]=h
buf[1]=e
buf[2]=l
buf[3]=l
buf[4]=o
buf[5]=\0
4、数组初始化
(1)定义的时候直接初始化
(2)定义的时候通过手动输入数据(键盘赋值)
1. int a[10];
2. for(int i=0;i<10;i++)
3. {
4. scanf("%d",&a[i]);
5. }
6. //访问数组内容
7. for(int i=0;i<10;i++)
8. {
9. printf("%d\n",a[i]);
10. }
5、柔性数组
int a[]={1,2,3,4,5,6,7,8,9};
6、字符串数组
char buf[10]=”hello”;
char buf[10]={“hello”};
char buf[10]={‘h’,’e’,’l’};
7、数组内存的计算
sizeof 计算所有数据类(空间)的大小,关键字
strlen 计算字符串存储的长度,函数
NAME
strlen - calculate the length of a string
SYNOPSIS
#include <string.h>
size_t strlen(const char *s);
注意:所有的字符串数据类型的末尾有一个字符\0
8、数组内容清空
两种方法:
(1)在初始化的时候直接赋值为0,char buf[5]=0;
(2)使用系统函数bzero
NAME
bzero - write zero-valued bytes
SYNOPSIS
#include <strings.h>
void bzero(void *s, size_t n);
函数参数:
void *s, 数组名
size_t n 内存大小,字节数
用法:bzero(buf,5);
二位数组
1、定义:
一个一维数组中存放一维数组
2、数组写法:
int buf [3] [5];
数据类型 数组名 定义存储空间 空间
一共可以存储15个int类型的数据
3、二维数组初始化
(1)int buf[3][3]={{1,2,3},{4,5,6},{7,8,9}};
(2)int buf[][3]= {{1,2,3},{4,5,6},{7,8,9}};
(3)int buf[3][]= {{1,2,3},{4,5,6},{7,8,9}};//错误
#include<stdio.h>
int main()
{
int m;
int a[9]={1,2,3,4,5,6,7,8,9};
for(int i=0;i<9;i++) //冒泡排序
for(int j=0;j<8-i;j++)
if(a[j]>a[j+1])
{
m=a[j+1];
a[j+1]=a[j];
a[j]=m;
}
for(int i=0;i<9;i++)
if(a[i]%2)
printf("%d",a[i]);
printf("\n");
for(int j=9;j>0;j--)
if(a[j]%2==0)
printf("%d",a[j]);
printf("\n");
return 0;
}
结果:
函数
通过一定的方式实现某种功能
1、一个C程序有且仅有一个主函数
2、程序的入口就是主函数
3、主函数只能调用其他函数,不可以被其他函数调用
4、主函数的位置是不固定的
1、框架
(1)int main()
(2)void main()
(3)int main(int argc,char *argv[])
(4) int main(int argc,char **argv)//外部传参
int argc, 传入参数的个数
char *argv[] 传入参数的内容
2、函数种类
主函数
自定义函数
系统函数,使用man手册
3、参数的类型
实参:就是函数实际使用的参数
形参:就是定义函数的时候,给传参提供的数据位置
int fun(int a,int b)//形参
{
}
int main()
{
fun(10,20);//实参
}
4、函数的声明、定义
声明:包含函数名的描述
定义:包含函数的实现过程
5、函数的作用域
局部变量:一般是存在于{}里面的内容,只作用于当前函数
全局变量:在所有函数之外,可以作用于整个.c文件
全局变量和局部变量重名,全局变量则会失效