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

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

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

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

相关文章
|
19天前
|
存储
数据结构初阶 顺序表的讲解
数据结构初阶 顺序表的讲解
11 0
|
11月前
|
程序员 C++
7.1 C/C++ 实现动态数组
动态数组相比于静态数组具有更大的灵活性,因为其大小可以在运行时根据程序的需要动态地进行分配和调整,而不需要在编译时就确定数组的大小。这使得动态数组非常适合于需要动态添加或删除元素的情况,因为它们可以在不浪费空间的情况下根据需要动态增加或减少存储空间。
52 0
|
12月前
|
存储 人工智能 编译器
动态数组进阶
动态数组进阶
|
存储 C语言
【数据结构初阶】二、顺序表的实现
目录 一、线性表 二、顺序表 2.1 顺序表概念及结构 2.2 顺序表接口实现 2.2.1 顺序表初始化 2.2.2 顺序表的销毁 2.2.3 顺序表的打印 2.2.4 顺序表增加数据(插入,头插、尾插) 2.2.5 顺序表删除数据(删除,头删、尾删) 2.2.6 顺序表查找数据 2.2.7 顺序表修改数据 三、顺序表完整代码(C语言) 3.1 SeqList.h 3.2 SeqList.c 3.3 Test.c 四、顺序表的优缺点
5772 0
【数据结构初阶】二、顺序表的实现
|
存储
【初阶数据结构】——顺序表详解(C描述)
【初阶数据结构】——顺序表详解(C描述)
91 0
【数据结构初阶】数组栈和链式队列的实现
【数据结构初阶】数组栈和链式队列的实现
|
存储 算法 测试技术
【数据结构初阶】顺序表的实现
【数据结构初阶】顺序表的实现
C动态数组
C动态数组
74 0
C动态数组
|
存储 C++
【初阶数据结构之顺序表实现】(一)
【初阶数据结构之顺序表实现】(一)
【初阶数据结构之顺序表实现】(一)
|
存储 Java 索引
线性表之动态数组(ArrayList)的自实现
线性表之动态数组(ArrayList)的自实现
线性表之动态数组(ArrayList)的自实现