初始C语言中的数组(男神翁凯老师MOOC)
定义数组
●<类型>变量名称[元素数量];
● int grades[100];
●double weight[20];
●元素数量必须是整数
●C99之前:元素数量必须是编译时刻确定的字面量
●是一种容器(放东西的东西)
●其中所有的元素具有相同的数据类型;
●一旦创建,不能改变大小
●*(数组中的元素在内存中是连续依次排列的)
●可以出现在赋值的左边和右边
数组的单元
●数组的每个单元即使数组类型的一个变量
●使用数组时放在[]中的数字叫做下标或索引,下标从0开始计数(下标从0开始计数时C语言开始,为了方便编译器)
有效的下标范围
●编译器对运行环境都不会检查数组下标是否越界,无论是对数组单元做读还是写
●一旦程序运行,越界的数组访问可能造成问题,导致程序崩溃
● segmentation fault
●但是也可能运气好,没造成严重的后果
●所以这是程序员的责任来保证程序只使用有效的下标值:[0,数组的大小—1]
数组的集成初始化
int a[]={,,,,,,,8,9};
●直接用大括号给出数组的所有元素的初始值
●不需要给出数组的大小,编译器替你数数
集成初始化时的定位(C99 Only)
int a[]={
[]=,[]=,,
}; //a[3]=6
●用[n]在初始化数据中给出定位
●没有定位的数据接在前面的位置后面
●其他位置的值补零
●也可以不给出数组的大小,让编译器算
●特别适合初始数组稀疏的数组
数组的大小
●sizeof 给出整个数组所占据内容的大小,单位是字节
sizeof(a)/sizeof(a[0])
●sizeof(a[0])给出数组中单个元素的大小
●这样的代码,一旦修改数组中的初始数据,不需要修改遍历的代码
数组的赋值
int a[]={,,,,};
int b[]=a;//错误写法
●数组变量本身不能被赋值
●要把一个数组所有的元素交给另一个数组,必须采用遍历
for(i=;i<length;i++){
b[i]=a[i];
}
数组的遍历
●通常都是使用for循环,让循环变量i从0到<数组的长度,这样循环体内最大的i正好是数组最大的有效下标
常见错误是:
●循环结束条件是<=数组长度,或
●离开循环后,继续用 i 的值来做数组元素的下标!
数组作为函数参数时,往往必须再用另一个参数来传入数组的大小
数组作为函数的参数时:
●不能在[]中给出数组的大小
●不能再利用sizeof来计算数组的元素个数!
二维数组
int a[3][5]
●通常理解为a是一个3行5列的矩阵
二维数组的遍历
for(i=;i<;i++){
for(j=;j<;j++){
a[i][j]=i*j;
}
}
●a[a,j] 表示的是a[j] (逗号表达式)
二维数组的初始化
int a[][]={
{,,,,,},
{,,,,},
};
●列数是必须给出的,行数可以由编译器来数
●每行一个{},逗号分隔
●最后的逗号可以存在,有古老的传统
●如果省略,表示补零
●也可以用定位(C99 ONLY)
初始C语言中的数组(男神翁凯老师MOOC)的更多相关文章
- 初识C语言中的函数(男神翁凯老师MOOC)
什么是函数? 函数是一块代码,接收零个或多个参数,做一件事情,并返回零个或一个值. 可以先想象成数学中的函数: y=f(x) 例如 求begin到end和的函数定义 void sum(int begi ...
- go语言中的数组切片:特立独行的可变数组
go语言中的数组切片:特立独行的可变数组 初看go语言中的slice,觉得是可变数组的一种很不错的实现,直接在语言语法的层面支持,操作方面比起java中的ArrayList方便了许多.但是在使用了一段 ...
- Go 语言中的数组是一种 值类型(不像 C/C++ 中是指向首元素的指针)
the-way-to-go_ZH_CN/07.1.md at master · Unknwon/the-way-to-go_ZH_CN https://github.com/Unknwon/the-w ...
- Go语言中底层数组和切片的关系以及数组扩容规则
Go语言中底层数组和切片的关系以及数组扩容规则 demo package main import ( "fmt" ) func main() { // 声明一个底层数组,长度为10 ...
- 初始C语言中的指针(翁凯男神MOOC)
运算符 & ● scanf("%d",&i); ●获得变量的地址,它的操作数必须是变量 ● int i; printf("%x",& ...
- C语言中的数组和指针以及字符串
数组名同时也是该数组首元素的地址,而指针提供了一种用来使用地址的符号方法,因此指针能够很有效地处理数组. 将一个整数加给指针,这个整数会和指针所指类型的字节数相乘,然后所得的结果会加到初始地址上 da ...
- Go语言中的数组与数组切片
Go中的数组与C的数组一样,只是定义方法不同 c: int a[10][10] Go [10][10]int 定义并初始化 array1 := [5]int{1,2,3,4,5} 变量名 := [in ...
- C语言中动态分配数组
如何动态的定义及使用数组呢?记得一般用数组的时候都是先指定大小的.当时问老师,老师说是不可以的.后来又问了一位教C++的老师,他告诉我在C++里用new可以做到,一直不用C++,所以也不明白.今天在逛 ...
- 【转】C语言中动态分配数组
原文地址:http://blog.chinaunix.net/uid-11085590-id-2914577.html 如何动态的定义及使用数组呢?记得一般用数组的时候都是先指定大小的.当时问老师,老 ...
随机推荐
- Win7 发生验证错误 要求的函数不受支持
今天登陆服务器突然登不上了,给我报了一个错误“发生验证错误 要求的函数不受支持”,用同事的win7电脑和win10电脑都可以,就是我的不行,气死我了,然后我百度百度啊,用了好几种“说用了就OK”的办法 ...
- MySQL库操作,表操作,数据操作。
数据库服务器:本质就是一台计算机,该计算机上安装有数据库管理软件的服务端,供客户端访问使用. 1数据库管理系统RDBMS(本质就是一个C/S架构的套接字),关系型数据库管理系统. 库:(文件夹)- ...
- Django之三种文件上传
方式一: 通过form表单提交到后台 前端: <!DOCTYPE html> <html lang="en"> <head> <meta ...
- 安全测试6_Web安全工具第三节(Web安全工具)
之前学习了下安全工具前的一些基础知识,今天来学习下安全工具,这些工具是python写的. 1.敏感文件探测入门: 敏感文件探测的原理如下: 一般探测敏感文件我们都是借助工具扫描,这里我给大家推荐一个简 ...
- unicode转中文以及str形态的unicode转中文
今天在工作中遇到这样一个问题(工作环境为Python2.7.1),需要将一个字典中字符串形态的Unicode类型的汉字转换成中文,随便总结一下: 1.unicode转中文 old = u'\u4e2d ...
- GNU coreutils
内核实用程序,针对文本及文件操作.涉及到102条linux命令.命令列表:cp.install.ln.mv.ls.echo…… 常见选项 1.退出状态 2.备份选项 cp, install, ln, ...
- tomcat -web.xml里的内容
<?xml version="1.0" encoding="UTF-8"?> <Server port="8005" sh ...
- ORA-00257: archiver error. Connect internal only, until freed【日志归档清理】
select * from V$FLASH_RECOVERY_AREA_USAGE; 查看使用情况 用plsql登陆时提示“ORA-00257: archiver error. Connect in ...
- python读取grib grib2气象数据
如何读取GRIB数据?快看Python大神整理的干货! 橙子心法 百家号17-11-0116:30 GRIB是WMO开发的一种用于交换和存储规则分布数据的二进制文件格式,主要用来表示数值天气预报的产品 ...
- <转载> GIT 操作小结 http://www.cnblogs.com/-ding/p/6008096.html
参考: http://www.cnblogs.com/zyf-zhaoyafei/p/4486220.html 作者:万境绝尘 转载请注明出处:http://blog.csdn.net/shulian ...