博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《C语言程序设计(第四版)》阅读心得(二)
阅读量:6267 次
发布时间:2019-06-22

本文共 1205 字,大约阅读时间需要 4 分钟。

第六章引用数组处理批量数据

1、数组的定义 :类型符  数组名[常量表达式]

      1) 在主函数中定义数组,常量表达式不能包含变量

int a[3+5];   //合法int n;int a[n];       //不合法

        2)在被调用的函数中,其长度可以是变量或非常量表达式

void func( int n){     int a[2*n]; //合法,因在执行函数时n的值是不变的}

     3)在C语言中数组名代表该数组的起始地址,scanf函数中的输入项如果是字符数组,不要再加地址符&

 

2、数组的初始化

如果在定义数值型数组时,指定了数组的长度并对之初始化,凡未被“初始化列表”指定初始化的数组元素,系统会自动把他们初始化

为0(如果是字符型数组,则初始化为'\0',如果是指针型数组,则初始化为NULL(空指针)

int a[10] = { 1,2,3,4,5};  //只初始化前五个元素,后五个元素为0

 

3、二维数组的初始化

int a[3][4] = {
{
1},{
5},{
9}}; /*赋值后元素为 1 0 0 0 5 0 0 0 9 0 0 0*/
int a[3][4] ; //定义一个三行四列的数组a[3][4] = 3; //不合法,数组从0开始,不存在a[3][4]

 

4、用数组名作函数实参时,不是把数组元素的值传递给形参,而是把实参数组的首元素地址传递给形参数组,这样两个数组就共占同一段内存单元。如果实参数组为a,形参数组为b,若a的首元素地址为1000,则b的首元素地址也是1000。显然如果改变了b[0]的值,也就意味着a[0]的值也改变了。即形参数组中个元素的值如发生改变会使时常数组元素的值同时发生改变。

       对多维数组,形参数组的第1堆大小可以忽略,第二堆大小不能忽略,而且要和实参数组的第二维大小相同

int score[5][10] ;    //实参数组定义int array[][10]  ;    //正确形参定义int array[8][10] ;    //正确形参定义int array[5][]   ;    //错误形参定义int array[][]    ;    //错误形参定义

 

第七章 用函数实现模块化程序设计

1、静态局部变量使在编译时赋初值的,即只赋初值一次,在程序运行时它已经有了初值,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。而对自动变量赋初值,不是在编译时进行的,而是在函数调用时进行的,每调用一次函数重新给一次初值,相当于执行一次赋值语句。

2、如果定义静态局部变量时没有赋初值,编译时会自动赋初值0

               定义自动变量没有赋初值,它的值是一个不确定的值。

转载于:https://www.cnblogs.com/yuxiaoba/p/8469418.html

你可能感兴趣的文章
Fix-Mapped Addresses
查看>>
fmt标签如何计算两个日期之间相隔的天数
查看>>
Spark核心技术原理透视一(Spark运行原理)
查看>>
《Gradle权威指南》--Gradle任务
查看>>
IntelliJ IDEA创建文件时自动填入作者时间 定制格式
查看>>
Android app启动activity并调用onCreate()方法时都默默地干了什么?
查看>>
远程监视jboss应用java内存的配置
查看>>
前端如何接收 websocket 发送过来的实时数据
查看>>
JavaWeb下载文件response
查看>>
Laravel的三种安装方法总结
查看>>
SpringMVC加载配置Properties文件的几种方式
查看>>
C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginat...
查看>>
java 项目相关 学习笔记
查看>>
numpy opencv matlab eigen SVD结果对比
查看>>
WPF获取某控件的位置,也就是偏移量
查看>>
Boost C++ 库 中文教程(全)
查看>>
solr查询优化(实践了一下效果比较明显)
查看>>
jdk目录详解及其使用方法
查看>>
说说自己对RESTful API的理解s
查看>>
通过layout实现可拖拽自动排序的UICollectionView
查看>>