C基础(学习)2024.7.19

         Linux基本命令,vi编译器的使用,简单的编程步骤,程序语言,gcc编译器编译过程,进制转换相关知识可以查看文档http://t.csdnimg.cn/CmqhC

        数值表示,词法符号,变量,常量相关知识可以查看文档http://t.csdnimg.cn/jJIe2

        运算符和输表达式,输入输出相关知识可以查看文档http://t.csdnimg.cn/FJe89

        控制语句,if-else,switch-case,for,while,do-while,循环控制语句相关知识可以产看文档http://t.csdnimg.cn/zskY3

目录

数组

数组的基本用法:

1.定义格式

数组定义方法

2.访问元素

特点:

注意:

一维数组:

初始化

1.全部初始化

2.部分初始化

3.不初始化

定义空数组

数组引用

数组大小

清零函数:

1.bzero( )函数

2.memset( )函数 

数组内存分配

字符数组:

表示形式

输入

1.利用scanf输入

2.利用for循环遍历输入

3.利用gets()函数输入

输出

1.利用printf输出

2.利用for循环遍历输出

3.利用puts()函数输出

计算字符串长度

1.利用循环计算

2.利用strlen()函数计算

3.sizeof和strlen的区别

数组

        数组(Array)是有序元素序列,若将有限个类型相同的变量的集合命名,那么这个名称为数组名。重点必须是类型相同和连续的变量集合

数组的基本用法:

1.定义格式

        存储类型 数据类型 数组名[元素的个数];        例如:(auto) int a[5];

        数组名:代表数组的首地址,也就是第一个元素的地址。a是地址常量,不能为左值,不能被赋值。

数组定义方法

        (1)数组名定义规则跟变量名相同,遵循标识符定义规则

        (2)数组名后使用方括号括起来的常量表达式表示元素个数

        (3)常量表达式中可以包含常量和符号常量(宏定义),不能包含变量

2.访问元素

        数组名[下标];

        注意:数组元素下标从0开始

        访问第一个元素:a[0];

        访问第n个元素:a[n-1];

特点:

        (1)数据元素的数据类型相同

        (2)内存连续

注意:

        1). 数组的数据类型就是数据元素的数据类型

        2). 数组名要符合标识符的命名规则

        3). 在同一个函数中,数组名不要与变量名相同

        4). 下标从0开始的,到n-1结束

一维数组:

        只有一个下标的数组

        定义格式:存储类型 数据类型 数组名[元素个数];

        访问元素:数组名[下标];       下标从0开始

        数组名:数组首地址,也就是第一个元素的地址。

初始化

1.全部初始化

        例如:int a[5]={1,2,3,4,5};

2.部分初始化

        例如:int a[5]={1,2};

        未初始化的元素值自动为0。

3.不初始化

        例如:int a[5];

                  a[0]=1;

        未初始化需要对单个元素进行赋值,否则局部变量为随机值。

定义空数组

        1. int a[5] = {0,0,0,0,0};

        2.int a[5] = {0};

        3.int a[5] = { };

数组引用

        1.先定义后引用

        2.每次只能引用一个数组元素a[i], 如果想引用所有元素可以循环遍历

        3.打印数组元素地址用%p格式

数组大小

        1.元素个数*数据类型大小

        2.使用sizeof:sizeof(数组名)

        数组元素个数=sizeof(数组名)/元素大小;

例题:计算斐波那契数列前15项并逆序输出:

#include <stdio.h>
int main()
{
    int a[15] = {1, 1};
    for (int i = 2; i < 15; i++)
    {
        a[i] = a[i - 2] + a[i - 1];
    }
    for (int i = 14; i >= 0; i--)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}

清零函数:

1.bzero( )函数

void bzero(void *s, size_t n);

功能:将内存空间设置为0

参数:s: 要清空的空间首地址

           n: 字节大小

返回值:无

2.memset( )函数 

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

功能:将指定内存空间内容设置为0

参数:s:指定内存首地址

           c:要设置的数,一般为0

           n:要设置的内存大小

返回值:无

数组内存分配

int a[5];

a是数组名,也是数组的首地址也就是第一个元素的地址,即&a[0]。

a+1 是数组第二个元素的地址,即&a[1]。

        通过地址间接取地址表示空间的内容可以通过

字符数组:

类型为字符的数组,也就是数组中每个元素是字符型。可以表示字符串。

表示形式

(1)单个字符表示:

        char s1[] = { 'h', 'e', 'l', 'l', 'o'};  

(2)用字符串表示,结尾会自动添加上'\0'。

        char s5[6] ="hello";  //sizeof(s5) = 6

        如果定义时不赋值则不能省略元素个数

输入

1.利用scanf输入

char s[32] = {};

scanf("%[^\n]", s);  //除了\n以外所有字符都可以输入到s地址下空间内保存,遇到\n就结束
输入字符串会在后面加上'\0'

2.利用for循环遍历输入

char s[6] = " ";
 for (int i = 0; i < 6; i++)

{

        scanf("%c", &s[i]);

}

3.利用gets()函数输入

char *gets(char *s);
功能:从终端获取字符串输入
参数s:目标字符串首地址
返回值:目标字符串首地址
注意:没有数组越界检查,使用时会报警告,可以忽略

输出

1.利用printf输出

char s[6]="hello";
printf("%s\n",s);

2.利用for循环遍历输出

 char s[6] = "hello";
 for (int i = 0; i < 32; i++)

{

         printf("%c", s[i]);

}

3.利用puts()函数输出

int puts(const char *s)
功能:向终端打印字符串
参数:打印的字符串首地址
返回值:字符串长度

计算字符串长度

1.利用循环计算

char s[6] = "hello";
int i = 0;
while (s[i] != '\0')
{
        i++;
}
printf("%d\n", i); 

2.利用strlen()函数计算

#include <string.h>
size_t strlen(const char *s);
功能:计算字符串长度
参数:字符串的首地址
返回值:返回字符串实际长度,不包括'\0'在内。

3.sizeof和strlen的区别

        1.sizeof是关键字,strlen是函数

        2.sizeof是计算数据所占空间大小,strlen计算字符串的实际长度

        3.sizeof计算包括\0,strlen计算不包括\0;计算字符串长度时,sizeof比strlen大

  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值