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};
分享到:
相关推荐
附录一 再论指针和数组.PPT 本章概述:指针和数组是C语言中两个重要的概念,但它们之间容易混淆。本章将对指针和数组进行详细的分析和比较,帮助读者掌握指针和数组的区别和相同点,并掌握如何使用指针和数组。 1....
第9章专注于合式类型,包括重写object的成员、运算符重载、引用其他程序集、定义命名空间、XML注释的使用、垃圾回收和资源清理的方法。 第10章讲述了异常处理,包括多异常类型、捕捉异常、自定义异常的定义以及异常...
《矩阵论》是一门深入研究线性代数高级理论的学科,主要涵盖了矩阵的性质、运算、分解以及在各种数学和工程领域中的应用。课后习题是学习矩阵论的重要组成部分,它们帮助学生巩固概念,深化理解,并锻炼解决实际问题...
5. **第九章:贪婪算法** - 贪心算法通常用于求解局部最优解,如霍夫曼编码、Prim最小生成树等。Java代码将展示如何通过局部最优决策达到全局最优。 6. **第七章:递归** - 递归是算法设计中的一种重要思想,如...
第九章 数组 * 数组的概念:数组是一种数据结构,用于存储多个相同类型的数据。 * 数组的操作:包括数组的创建、访问和修改等。 第十章 继承、接口和包 * 继承的概念:继承是指一个类继承另一个类的所有成员。 * ...
1. **第一章**:矩阵论的基本概念,包括矩阵的定义、基本运算以及矩阵的等价关系。 2. **第二章**:矩阵的线性组合与线性相关性,讨论如何确定一组向量是否线性相关或线性无关。 3. **第三章**:矩阵的秩,介绍...
北航矩阵B班的第四章作业主要涵盖了矩阵理论的一些核心概念和重要问题,这是一份2014年秋季学期的研究生课程作业,由张绍飞教授指导。尽管作业中的答案可能并不全部保证正确,但它仍然是一个宝贵的参考资料,有助于...
第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 ...
在数学的世界里,矩阵论是一门至关重要的分支,它研究的是矩阵的性质、运算以及它们在各种数学领域中的应用。本教程聚焦于矩阵论的基本概念和习题解答,旨在帮助工科研究生深入理解和掌握这一核心理论。科学出版社的...
第九章的课件主要讲解了在Delphi中如何利用不同的函数和过程创建和使用对话框。 首先,课件提到了`ShowMessage`过程,它是最简单的对话框函数之一,用于显示一个包含“OK”按钮的消息对话框。`ShowMessage(const ...
- **t检验均值**(第9章第2节) - **卡方检验方差或标准差**(在线第12章第7节) - **比例的置信区间估计**(第8章第3节) - **Z检验比例**(第9章第4节) ##### 2. 比较两个组 - **两个独立总体均值差异的检验**(第10章第...
在5到9章的内容中,我们可以预见到涵盖了一些关键的知识点。 第五章可能涉及到的是数据结构和算法。数据结构是计算机存储、组织数据的方式,包括数组、链表、栈、队列、树、图等。算法则是解决问题或执行任务的明确...
2. 从第三个元素 a[2] 开始循环至数组最后一个元素 2.1 如果 a[2] 与 min 或 max 相等,跳过此次循环,进入下个元素; 2.2 如果 a[2] 小于 min,返回 min; 2.3 如果 a[2] 大于 max,返回 max; 2.4 如果 a[2] ...
【课程列表】 ...第3章 数值数组及向量化运算 共14页.pdf 第4章 数值计算 共9页.pdf 第5章 数据和函数的可视化 共28页.pdf 第6章 M文件和句柄函数 共10页.pdf 第7章 Notebook以及课程论文说明 共6页.pdf
### 大学计算机基础第9章知识点解析 #### 数据结构的基本概念 - **数据结构定义**:数据结构指的是数据元素间的特定组织形式及其相应的操作集合。数据元素间的关系构成了结构,而这些结构决定了数据的组织形态。 -...
#### 第9章:关于类和对象的进一步讨论 这部分将深入探讨类和对象的高级特性,如访问控制、静态成员、友元函数和运算符重载,以增强学生对面向对象编程的理解。 #### 第10章:运算符重载 运算符重载允许用户重新...
通过《矩阵论》各章例题的学习,学生可以逐步掌握上述知识点,并通过实例加深理解,提升解决实际问题的能力。这些例题通常涵盖基础概念的运用、复杂计算的演示以及理论的深化理解,对于巩固理论知识和提高计算技巧都...
第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的特殊情况 ...
第9章协同程序................56 9.1 协同的基础...............56 9.2 管道和过滤器...........58 9.3 用作迭代器的协同...61 9.4 非抢占式多线程.......63 第10章完整示例..............68 10.1 Lua作为...