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

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

开发者学堂课程【你的第一门 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

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

相关文章
|
10月前
|
存储 人工智能 算法
数据结构 1、基本概念 动态数组实现
数据结构 1、基本概念 动态数组实现
81 1
|
存储 设计模式 算法
【数据结构】ArrayList和顺序表
【数据结构】ArrayList和顺序表
56 0
|
程序员 C++
7.1 C/C++ 实现动态数组
动态数组相比于静态数组具有更大的灵活性,因为其大小可以在运行时根据程序的需要动态地进行分配和调整,而不需要在编译时就确定数组的大小。这使得动态数组非常适合于需要动态添加或删除元素的情况,因为它们可以在不浪费空间的情况下根据需要动态增加或减少存储空间。
|
存储 人工智能 编译器
动态数组进阶
动态数组进阶
|
存储 Java C语言
【Java数据结构】ArrayList顺序表
我们平时很喜欢使用的数组,就是顺序表! 下面我们将以 “模拟ArrayList” 的视角来盘一盘顺序表吧!
72 0
C动态数组
C动态数组
90 0
C动态数组
|
存储 Java 索引
线性表之动态数组(ArrayList)的自实现
线性表之动态数组(ArrayList)的自实现
线性表之动态数组(ArrayList)的自实现
|
编译器 C++
【C++】动态数组
那啥时候我们需要定义动态数组呢?
235 0
【C++】动态数组
|
人工智能 C语言 C++
啪啪啪:动态数组
啪啪啪:动态数组
|
存储 IDE Java
用最复杂的方式学会数组(Python实现动态数组)
用最复杂的方式学会数组(Python实现动态数组)
318 0
用最复杂的方式学会数组(Python实现动态数组)