`
kmplayer
  • 浏览: 497870 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

第九章 再论数组

阅读更多
1,char s[]和char* s等价的情况:作为函数定义的形式参数(仅限于这种情况).
实例:
#include <stdio.h>

int main()
{
    char a[]="abcefgh";
    printf("%p %s\n",a,a);
    //这里既可以把a作为数组名,也可以作为一个地址.
	return 0;
}


2,对数组的引用如a[i]在编译时,总是被编译改写成*(a+i)的形式.
在表达式中,指针和数组是可以互换的,因为他们在编译器那里的最终形式都是指针,并且都可以进行下标操作.

3,标准规定"类型的数组"的形参的声明应该调整为"类型的指针".
在函数形参定义这个特殊情况下,编译器必须把数组形式改写成指向数组第一个元素的指针形式.编译器只传递数组的地址,而不是整个数组的拷贝.
隐性转换意味着下面三种形式是完全等同的:
func(int* s){}
func(int s[]){}
func(int s[100]){}

4,把作为形参的数组和指针等同起来是出于效率原因的考虑.
可以这么理解:C语言在缺省情况下,数组和函数是传址调用,其他参数是传值调用.
当然数据也可以用传址调用,加上&即可.
因此:没有办法把数组本身传递给一个函数,因为它总是被自动转换为指向数组的指针.

5,可以通过向函数传递一个指向数组第一个元素的指针来访问整个数组,也可以让指针指向任何一个元素,这样传递给函数的就是从该元素之后的数组片段.

6,可以这样初始化二维字符串数组:
char* name[]={"Lily","Lucy","Mary"};
但是初始化int型二维数组,只能这么做:
int row1[]={1,2,3};
int row2[]={4,5,6};
int row3[]={7,8,9};
int* num[]={&row1,&row2,&row3};
分享到:
评论

相关推荐

    重点考点概括

    数据结构重点考点总结,第一章 概 论,第二章 线性表,第三章 栈和队列,第四章 串,第五章 多维数组,第六章 树,第七章 图,第八章 排序,第九章 查找

    lua 程序设计学习.doc 版

    第9章 协同程序 9.1 协同的基础 9.2 管道和过滤器 9.3 用作迭代器的协同 9.4 非抢占式多线程 第10章 完整示例 10.1 Lua作为数据描述语言使用 10.2 马尔可夫链算法 第二篇 tables与objects 第11章 数据结构 11.1 数组...

    C#本质论(第3版)

    第9章 合式类型 9.1 重写object的成员 9.1.1 重写to string() 9.1.2 重写gethashcode() 9.1.3 重写equals() 9.1.4 相等性实现的指导原则 9.2 运算符重载 9.2.1 比较运算符 9.2.2 二元运算符 9.2.3 ...

    《Visual C# 2008大学教程 第3版》.(刘文红).[PDF]&ckook.pdf

    第9章 LINQ与泛型集合简介 第10章 再论类与对象 第11章 面向对象编程:继承 第12章 多态、接口与运算符重载 第13章 异常处理 第14章 图形用户界面观念:第一部分 第15章 图形用户界面观念:第二部分 第16章 GUI与...

    Visual C#2010 从入门到精通(Visual.C#.2010.Step.By.Step).完整去密码锁定版 I部分

    第9章 使用枚举和结构来创建值类型 155 9.1 使用枚举 155 9.1.1 声明枚举 155 9.1.2 使用枚举 156 9.1.3 选择枚举文字常量值 157 9.1.4 选择枚举的基本类型 157 9.2 使用结构 159 9.2.1 声明结构 161 9.2.2 ...

    C#5.0本质论第四版(因文件较大传的是百度网盘地址)

    第9章 良构类型 253 9.1 重写object的成员 253 9.1.1 重写ToString() 253 9.1.2 重写GetHashCode() 254 9.1.3 重写Equals() 256 9.2 操作符重载 263 9.2.1 比较操作符 264 9.2.2 二元...

    数学建模培训资料 MATLAB及其应用 MATLAB基础入门教程含代码及绘图 共7个章节.rar

    【课程列表】 ...第3章 数值数组及向量化运算 共14页.pdf 第4章 数值计算 共9页.pdf 第5章 数据和函数的可视化 共28页.pdf 第6章 M文件和句柄函数 共10页.pdf 第7章 Notebook以及课程论文说明 共6页.pdf

    Lua中文教程(pdf版)

    第9章协同程序................56 9.1 协同的基础...............56 9.2 管道和过滤器...........58 9.3 用作迭代器的协同...61 9.4 非抢占式多线程.......63 第10章完整示例..............68 10.1 Lua作为...

    python数据分析随书代码

    第9章 分析文本数据和社交媒体 203 9.1 安装NLTK 203 9.2 滤除停用字、姓名和数字 206 9.3 词袋模型 208 9.4 词频分析 209 9.5 朴素贝叶斯分类 211 9.6 情感分析 214 9.7 创建词云 217 9.8 社交网络分析 222...

    Thinking in Java 中文第四版+习题答案

    第9章 违例差错控制 9.1 基本违例 9.1.1 违例自变量 9.2 违例的捕获 9.2.1 try块 9.2.2 违例控制器 9.2.3 违例规范 9.2.4 捕获所有违例 9.2.5 重新“掷”出违例 9.3 标准Java违例 9.3.1 RuntimeException的特殊情况 ...

    《数字图像处理》冈萨雷斯 第三版part1(共1-3部分)

    第9章 形态学图像处理  前言  9.1 预备知识  9.1.1 集合论中的基本概念  9.1.2 二值图像、集合和逻辑运算符  9.2 膨胀和腐蚀  9.2.1 膨胀  9.2.2 结构元素的分解  9.2.3 函数strel  9.2.4 腐蚀  9.3 膨胀...

    嵌入式gui的研制实做论文

    第一章 引论 9-11 1.1 课题提出背景 9-10 1.2 课题任务简介及本人所做的工作 10-11 第二章 嵌入式GUI的发展概况 11-17 2.1 概述 11-11 2.2 当前嵌入式GUI的技术分析 11-16 2.2.1 广泛占领市场的商用GUI ...

    python计算机视觉编程

    第9章 图像分割 9.1 图割(graph cut) 9.1.1 从图像创建图 9.1.2 用户交互式分割 9.2 利用聚类进行分割 9.3 变分法 练习 第10章 opencv 10.1 opencv的python接口 10.2 opencv基础知识 10.2.1 ...

    重构-改善既有代码的设计 中文版.pdf

    第9章 简化条件表达式 9.1 Decompose Conditional(分解条件式) 9.2 Co olidate Conditional Expression(合并条件式) 9.3 Co olidate Duplicate Conditional Fragments (合并重复的条件片段) 9.4 Remove ...

    JavaScript详解(第2版)

     第9章 JavaScript核心对象   9.1 什么是核心对象   9.2 数组对象   9.2.1 数组的声明及填充   9.2.2 Array对象属性   9.2.3 关联数组   9.2.4 嵌套数组   9.3 数组方法   9.4 Date对象 ...

    Java开发技术大全 电子版

    第9章运行时类型识别288 9.1RTTI的作用288 9.2用Class类来加载对象289 9.3使用getClass()方法获取类信息290 9.4使用类标记292 9.5使用关键字instanceof判断所属类292 9.6利用反射获取运行时类信息293 9.6.1...

    重构-改善既有代码的设计 中文版

    第9章 简化条件表达式 9.1 Decompose Conditional(分解条件式) 9.2 Co olidate Conditional Expression(合并条件式) 9.3 Co olidate Duplicate Conditional Fragments (合并重复的条件片段) 9.4 Remove ...

    C语言入门经典(第4版)--源代码及课后练习答案

    第9章 函数再探 325 9.1 函数指针 325 9.1.1 声明函数指针 325 9.1.2 通过函数指针调用函数 326 9.1.3 函数指针数组 329 9.1.4 作为变元的函数指针 331 9.2 函数中的变量 334 9.2.1 静态变量:函数内部的追踪...

Global site tag (gtag.js) - Google Analytics