啪啪啪:动态数组|学习笔记

简介: 快速学习啪啪啪:动态数组

开发者学堂课程【你的第一门 C 语言课快速学习啪啪啪:动态数组】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/444/detail/5468


啪啪啪:动态数组


动态数组案例

C 语言不允许修改在运行中的数组中的空间大小,不能定义动态数组

#incLude .h>

int main( )

{

int n,i;

printf("请输入字符的个数; ");

scanf ("%d" &n) ;

//定义一个字符数组,不仅定义了动态数组

char a[n+1 ]

printf("请开始输入字符: ");

//依次传入数组中

for(i=0;i

{

scanf("%C",&a[i]) ;

//a[i]其实就是一个变量

}

a[n] ='\0' ;

//输出结果

printf("你输入的字符串是: s\n",a) ;

return 0 ;

}

保存退出运行gcc test1.c&&./a/out

结果:

请输入字符的个数:17

请开始输入字符: I Love FishC. com !

你输入的字符串是:I Love FishC. com[fishc@localhost s1e18]$

结论:

c++也能执行变长数组,在执行过程中来指定变量数组的长度

ISOC99中允许可变长度的自动阵列,并且作为扩展 GCC 接受 C90模式和 C++。这些数组的声明与任何其他 automatie 数组一样,但其长度不是常量表达式。储藏室是在声明点分配,并在包含声明的块8609B 退出时解除分配。

修改代码:

#incLude .h>

int main( )

{

int n,i;

printf("请输入字符的个数; ");

scanf ("%d" &n) ;

//定义一个字符数组,不仅定义了动态数组

char a[n+1 ]

printf("请开始输入字符: ");

//添加getchar();读取换行

getchar();

//依次传入数组中

for(i=0;i

{

scanf("%C",&a[i]) ;

//a[i]其实就是一个变量

}

a[n] ='0' ;

//输出结果

printf("你输入的字符串是: s\n",a) ;

return 0 ;

}

保存退出运行gcc test1.c&&./a/out

结果:

请输入字符的个数:17

请开始输入字符: I Love FishC. com !

你输入的字符串是:I Love FishC.Com

[fishc@localhost s1e18]$

结论:修改完成后,代码显示正常

 测试访问数组边界(故意出错版)

#include

int main( )

int a[10],i;

for(i=0;i<=10;i++)

{

a[i] = i;

}

for(i=0;i<=10;i++)

{

printf( "%d\n",a[i]);

}

return 0 ;

保存退出运行gcc test2.c&&./a/out

结果:

0

1

2

3

4

5

6

7

8

9

10

结论:发现并没有报错

这样程序出错时不会出现毁灭性错误

修改为正确代码:

#include

int main( )

int a[10],i;

for(i=0;i<10;i++)

{

a[i] = i;

}

for(i=0;i<=10;i++)

{

printf( "%d\n",a[i]);

}

return 0 ;

保存退出运行gcc test2.c&&./a/out

结果:

0

1

2

3

4

5

6

7

8

9

10

发现结果一样,这就是访问数组边界

相关文章
JeecgBoot 短信验证码接口,如何实现防刷机制?
短信接口防刷,主要通过两个方面来实现:一个是短信接口加签和时间戳;另外针对短信接口,增加防刷 check 机制
344 1
|
11月前
|
存储 弹性计算 运维
阿里云云原生NDR发布:全流量防御能力升级
阿里云发布云原生NDR,提供全流量威胁检测与响应能力。该产品无需部署,支持一键接入、自动留存攻击报文,并具备多引擎关联分析、资产风险管理等功能,有效提升高级威胁应对能力。典型客户案例显示,NDR在重保防护、敏感数据泄露和日志合规等场景中表现出色。总结来看,NDR强调原生化、性价比和强检测,帮助用户简化安全运营并降低成本。
288 11
|
监控 前端开发 网络协议
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(5)-Fiddler监控面板详解
【2月更文挑战第7天】《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(5)-Fiddler监控面板详解 按照从上往下,从左往右的计划,今天就轮到介绍和分享Fiddler的监控面板了。监控面板主要是一些辅助标签工具栏。有了这些就会让你的会话请求和响应时刻处监控中毫无隐私可言。监控面板是fiddler最核心的功能之一。记录了来自于服务器端(webServer)的请求会话。包括页面的请求和静态文件的请求。状态面板主要显示的是会话及会话的状态。位于软件界面右边的这一大块面板,即为辅助标签 + 工具,宏哥称之为监控。
450 0
|
SQL 监控 Java
C3P0数据库连接池
C3P0数据库连接池
373 0
|
存储 监控 安全
云存储的安全性:保护你的数据的技术探索
【8月更文挑战第8天】云存储的安全性是保障用户数据安全的重要基础。通过数据加密、访问控制、多副本备份、网络安全和物理安全等多种技术手段,云存储服务提供商能够为用户提供安全可靠的存储服务。然而,用户也需要加强自身的安全意识和管理措施,共同维护云存储环境的安全稳定。
1217 2
|
SQL 存储 算法
PostgreSQL 执行计划,成本公式解说,代价因子校准,自动跟踪SQL执行计划(二)|学习笔记
快速学习PostgreSQL 执行计划,成本公式解说,代价因子校准,自动跟踪SQL执行计划(二)
PostgreSQL 执行计划,成本公式解说,代价因子校准,自动跟踪SQL执行计划(二)|学习笔记
|
分布式计算 DataWorks 关系型数据库
MaxCompute产品使用合集之如何在DataWorks中实现离线同步多个分表到MC的多级分区表
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
231 0
|
存储 SQL 关系型数据库
PolarDB架构
PolarDB分布式版产品架构
657 2
|
Unix Linux Windows
获取网站绝对路径常用方法
获取网站绝对路径常用方法
551 1