c语言中数组相关问题
2015-07-20 22:30
239 查看
c语言中数组相关问题:
1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。
2.语法: 数据类型 + 数组名+[元素个数]
3.初始化:初始化方式: int a[5]={1,2,3,4,5}。
编译器会根据初始化使用的元素个数自动提供个数。比如:inta[]={1,2,3},元素个数为3.
数组使用时应该注意的事项:
1,如果初始化时在后方元素赋值不全,没有初始化的元素,默认值为0 ;
2.数组中每一个变量称为元素。每个变量的位置是确定的。使用从0开始的序号进行访问。序号称为下标或者索引。
3.存放一维数组的数组称为二维数组。
4.数组的类型:数据类型表示数组元素的类型是什么。元素中的数据类型是统一的。
5.数组元素个数不允许时浮点数。可以是整数表达式。数组元素就是变量,直接可以用:如sum=a[1]+a[2];
6数组初始化方式:如:inta[5]={1,2,3,4,5},如果初始化时不完全:没有初始化的元素,默认值为0 ;
7.编译器会根据初始化使用的元素个数自动提供个数,如下文:
int a[]={1,2,3},元素个数为3.,sizeof(a)=12(每个元素占四个字节所以一共12字节);
14,使用数组求n个数的统计
15.栈和堆的概念。利用数组模拟栈的结构。
下面介绍一个数组在打印的时候溢出的问题:
//
// main.c for Xcode6.0
// 当我定义了一个可以盛放十个元素的数组arry[10]并赋值之后,使用printf函数加一个for循环体进行打印,这个时候有趣的事情发生了:
在printf下方的循环体中,由于循环条件设置不当,导致我对数组的打印下标越界。当打印a[10]时,printf函数自动将内存中本来存在的乱码打印出来了。
所以,下标越界问题,是程序猿使用数组时经常犯,也必须注意的问题。因为,这个bug编译器是不会报错的。
其实内存中数组的存放方式是这样的:
1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。
2.语法: 数据类型 + 数组名+[元素个数]
3.初始化:初始化方式: int a[5]={1,2,3,4,5}。
编译器会根据初始化使用的元素个数自动提供个数。比如:inta[]={1,2,3},元素个数为3.
数组使用时应该注意的事项:
1,如果初始化时在后方元素赋值不全,没有初始化的元素,默认值为0 ;
2.数组中每一个变量称为元素。每个变量的位置是确定的。使用从0开始的序号进行访问。序号称为下标或者索引。
3.存放一维数组的数组称为二维数组。
4.数组的类型:数据类型表示数组元素的类型是什么。元素中的数据类型是统一的。
5.数组元素个数不允许时浮点数。可以是整数表达式。数组元素就是变量,直接可以用:如sum=a[1]+a[2];
6数组初始化方式:如:inta[5]={1,2,3,4,5},如果初始化时不完全:没有初始化的元素,默认值为0 ;
7.编译器会根据初始化使用的元素个数自动提供个数,如下文:
int a[]={1,2,3},元素个数为3.,sizeof(a)=12(每个元素占四个字节所以一共12字节);
14,使用数组求n个数的统计
15.栈和堆的概念。利用数组模拟栈的结构。
下面介绍一个数组在打印的时候溢出的问题:
//
// main.c for Xcode6.0
// 当我定义了一个可以盛放十个元素的数组arry[10]并赋值之后,使用printf函数加一个for循环体进行打印,这个时候有趣的事情发生了:
在printf下方的循环体中,由于循环条件设置不当,导致我对数组的打印下标越界。当打印a[10]时,printf函数自动将内存中本来存在的乱码打印出来了。
所以,下标越界问题,是程序猿使用数组时经常犯,也必须注意的问题。因为,这个bug编译器是不会报错的。
其实内存中数组的存放方式是这样的:
相关文章推荐
- 如何快速学习C语言
- C\C++和Java 的区别(特别是在内存分配方面)
- ping工具的C语言简单实现 (ICMP echo)
- C++ 虚析构函数、纯虚析构函数
- 黑马程序员------C语言基础 循环体结构
- leetcode 日经贴,Cpp code -Sliding Window Maximum
- C++ primer 笔记
- C语言各种预编译宏总结
- C语言如何操作内存和对NULL的解释
- C语言基础
- 高质量C++/C编程指南
- 关于const 作用和用法 C++ const 的全面总结
- 深度优先搜索的实现及本质
- C++中的四种强制类型转换
- HDJ2024C语言合法标识符
- C++静态成员变量和静态成员函数
- 决策树ID3分类算法的C++实现
- C语言补习知识点~华清远见上课笔记
- C语言中的union
- [Effective C++]构造/析构/赋值运算