首页 > 其他分享 >C基础(学习)2024.7.19

C基础(学习)2024.7.19

时间:2024-07-20 13:57:41浏览次数:15  
标签:2024.7 19 元素 地址 学习 int 数组名 数组 字符串

         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大

标签:2024.7,19,元素,地址,学习,int,数组名,数组,字符串
From: https://blog.csdn.net/qq_60450758/article/details/140545364

相关文章

  • Java计算机毕业设计老年教育学习系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球人口老龄化的加速,老年教育作为提升老年人生活质量、促进终身学习的重要途径,日益受到社会各界的关注。然而,传统教育模式在满足老年人多样化、......
  • 苍穹外卖学习笔记——第十一天
    数据统计(图形报表)ApacheEChartsApacheECharts是一款基于Javascript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。官网地址:https://echarts.apache.org/zh/index.html。使用Echarts,重点在于研究当前图表所需的数据格式。通常是需要后端提供符合格式......
  • Jupyter Notebook与机器学习:使用Scikit-Learn构建模型
    JupyterNotebook与机器学习:使用Scikit-Learn构建模型介绍JupyterNotebook是一款强大的交互式开发环境,广泛应用于数据科学和机器学习领域。Scikit-Learn是一个流行的Python机器学习库,提供了简单高效的工具用于数据挖掘和数据分析。本教程将详细介绍如何在JupyterNoteboo......
  • 零基础,快速学YOLO目标检查算法(YOLO—v1,2,3快速学习)
    一.深度学习经典检测方法1.two-stage(两阶段):Faster-rcnnMask-Rcnn系列,先有预选,预选完之后再通过预选得到最终结果。速度通常较慢,但效果不错2.one-stage(单阶段):YOLO系列,普通回归任务。最核心的优势,速度非常快,适合做实时检测任务,但效果通常情况不会太好二.指标分析map指标......
  • C++学习笔记
    第一章预备知识C++融合了三种不同的编程方式:过程性编程(C语言代表的)、面向对象编程(C语言基础上添加的类代表的)、泛型编程(C++模板支持)。Linux上源代码文件编译完后生成后缀.o的目标代码文件,然后执行链接后生成文件名为a.out(默认取名)的可执行程序。C++源文件名的后缀有.cpp......
  • [rCore学习笔记 016]实现应用程序
    写在前面本随笔是非常菜的菜鸡写的。如有问题请及时提出。可以联系:[email protected]:https://github.com/WindDevil(目前啥也没有设计方法了解了特权级机制,实际上如果要设计一个应用程序就需要保证它符合U模式的要求,不要去访问S模式下的功能,那么其实现要点是:应......
  • PyQt5学习路线
    后续会根据该文章的路线逐步发布对应的教程,订阅专栏不迷路......
  • 超详细的MySQL基本使用教程(1) 黑马程序员javaweb学习笔记+练习(附带idea新版ui图形化页
    什么是数据库MySQL概述数据模型关系型数据库SQL简介小结DDL-数据库的设计数据库的常见操作选中该语句然后点运行就成功运行了可以直接用图形化界面进行操作跳转到控制台表的常见操作1.创建练习在db01中创建这张表其中comment是鼠标悬停在......
  • PYTHON学习笔记(六、python数据结构--字典)
    (3)dict字典字典数据类型的含义是:根据一个信息查找另一个信息的方式构成了“键值对”,它表示索引用的键和对应的值构成对应的关系。1、字典的创建方式1)使用{ }直接创建字典使用{ }创建字典的语法结构如下:d={key1:value1,key2:value2......}例如:#使用{}创建字典d=......
  • 数论学习笔记
    ExGCD:目的:求形如\(Ax+By=C\)的不定方程的通解有解判断:方程有解的充要条件是\(Gcd(a,b)|C\),可以使用数论知识证明问题简化:将问题简化为求\(Ax+By=Gcd(a,b)\)的通解,先求他的一组解。思路及证明:使用递归的思想减小A和B的值,直至方程变为\(x=Gcd(x,0)\)的形式。已知:\[Gc......