-->

函数的语句以及数组

语句

;//这个是空语句
lable://有冒号的是标签语句  case default 都算
goto return break continue//跳转语句
7+a;//表达式语句,要有运算符和操作对象(可以是变量或常量)
if switch//选择语句
{}//复合语句

循环语句:

while(表达式){}:首先会执行表达式,然后进入符合语句,再去判断表达式依次循环

do{}while(表达式);:首先会执行复合语句,然后在进入表达式,然后再执行复合语句,依次循环

for(表达式1;表达式2;表达式3){}:先执行表达式1,在进入这个循环的时候,表达式1只执行一次,然后执行表达式2,然后执行符合语句,然后执行表达式3,然后执行表达式2,依次循环。

数组

//数组的定义
int buf[5];   char buf[6];
//初始化
int buf[5] = {1};//这样子表示把第一个元素赋值为1,其他元素系统自动赋值为0

给所有的数组一次性赋值
如果想要一次性给所有的数组赋值,那么可以使用这两个函数bzero()和memset()

  • bzero()函数
//函数原型
void bzero(void *s, size_t n);

//包含头文件
#include <strings.h>

函数的作用

传入一个起始地址s,和需要赋值的长度n,然后可以从第一个地址开始的,每一个字节都赋值为\0字符,无返回值

函数参数

参数 说明
void *s 开始赋值的地址
size_t n 从开始到第n个全部赋值(单位字节)
返回值
  • memset()函数
//函数原型

void *memset(void *s, int c, size_t n);

//包含头文件
#include <string.h>

函数的作用

传入一个起始地址s,和需要赋值的长度n,然后将前n个字节都赋值为c,注意是前n个字节。

函数参数

参数 说明
void *s 开始赋值的地址
int c 赋值的数据
size_t n 从开始到第n个全部赋值,每一个字节都一样的值(单位字节)
返回值 s的首地址
  • 无论是定义普通的变量还是数组,数据类型不仅代表定义变量或者元素的宽度,还可以代表偏移一位的大小
//例如,都知道数组名是地址
int buf[5];
//buf+1 --> buf[1],偏移到了下一个元素,也就是说,定义的数据类型可以指定偏移的宽度,buf是第一个元素的地址,+1就代表偏移了4个字节。如果定义的是char型数组,那么+1就会偏移1个字节
int a;//这也是一样的
//&a+1 --> 地址也是偏移了4个字节
  • 定义一个数组int buf[5];如果使用取地址符号&取数组名的地址,&buf那么那就代表整一个数组,意思是地址还是和buf相同的,但是一个代表一个数组的首元素,另一个代表一整个数组
  • 也就是在偏移的时候,代表一个数组的只会偏移一个元素的大小,代表一整个数组会偏移一整个数组的大小
int buf[5];//数组的大小为5*4  首地址0x0000 0000
&buf+1 --> 0x0000 0014 加了20个字节刚好一整个数组的大小,
buf+1 --> 0x0000 0004 加了1个字节,刚好一个元素的大小
  • 如果数组名和sizeof单独遇上,int buf[5]; sizeof(buf);那么他会表示整个数组的大小,意思是得出来的结果是4*5=20,也就是一个数组的大小20,注意只有单独遇上,有运算符都不行
posted @ 2024-06-14 09:57  wuju  阅读(12)  评论(0)    收藏  举报