C语言数组与函数问题归纳
2017-11-10 09:09
239 查看
(一):可以使用数组后面第一个元素的地址吗?可不可以查看该地址的值?
答: 可以使用数组后面第一个元素的地址,但不可以查看该地址中的值。
(二):为什么要小心对待数组后面那些元素的地址呢?
答:地址分为基地址和地址偏移量,如果程序使用一段地址结构,在基地址处刚好存放着数组a0,基地址无法改变,地址偏移量也不可能是负值,所以位于a0[0]前面的元素这种说法就没有意义了。
(三):数组作为参数传递给函数时,为什么不可以通过sizeof得到数组的大小?
答:当把数组作为函数的参数时,你无法在程序运行时通过数组参数本身告诉函数该数组的大小,因为函数的数组参数相当于指向该数组第一个元素的指针。
(四):能不能将另外一个地址赋给一个数组名?为什么?
答:数组名不能被放在赋值运算符的左边。一个数组是一个对象,而它的数组名就是指向这个对象的第一个元素的指针。
(五):array_name和&array_name有什么不同?
答:array_name是指向数组中第一个元素的指针,&array_name是指向整个数组的指针。
(六):字符串和数组有什么不同?
答:数组的元素可以是任意一种类型,而字符串是一种特别的数组,它使用了一种众所周知的,确定长度的规则。
(七):函数声明与定义是什么?
答:类型标识符 函数名(形式参数表列)
{
声明部分
语句
}
(八):形式参数和实际参数的区别?
答:函数在调用时把一些表达式作为参数传递给函数。函数定义中的参数是形式参数,函数的调用者提供给函数的参数是实际参数。
在函数调用前,实际参数的值将被复制到这些形式参数中。
(九):如何编写有多个返回值的C语言函数?
答:可以利用全局变量 ,传递数组指针,传递结构体指针来编写有多个返回值的C语言函数。
(十):如何进行参数的传递?
答:指针变量赋给形参的“值”本身是一个地址,这个地址为形参访问其所指变量创造了可靠条件,
形参可以对指针本身进行操作,也可对指针所指的变量进行操作,但这两种操作都不影响实参本身的值。
数组名本身是一个特殊的指针变量,其值是数组的首地址,因此作为实参时其传给形参的是内存中某指定单元的地址,调用过程中形参数组与实参数组占用同一段内存单元,因此对形参数组的操作也就是对实参数组的操作,对实参数组与形参数组来说数据传递表现为“双向”的,而对实参变量与形参变量而言数据的传递仍然是单向的。
答: 可以使用数组后面第一个元素的地址,但不可以查看该地址中的值。
(二):为什么要小心对待数组后面那些元素的地址呢?
答:地址分为基地址和地址偏移量,如果程序使用一段地址结构,在基地址处刚好存放着数组a0,基地址无法改变,地址偏移量也不可能是负值,所以位于a0[0]前面的元素这种说法就没有意义了。
(三):数组作为参数传递给函数时,为什么不可以通过sizeof得到数组的大小?
答:当把数组作为函数的参数时,你无法在程序运行时通过数组参数本身告诉函数该数组的大小,因为函数的数组参数相当于指向该数组第一个元素的指针。
(四):能不能将另外一个地址赋给一个数组名?为什么?
答:数组名不能被放在赋值运算符的左边。一个数组是一个对象,而它的数组名就是指向这个对象的第一个元素的指针。
(五):array_name和&array_name有什么不同?
答:array_name是指向数组中第一个元素的指针,&array_name是指向整个数组的指针。
(六):字符串和数组有什么不同?
答:数组的元素可以是任意一种类型,而字符串是一种特别的数组,它使用了一种众所周知的,确定长度的规则。
(七):函数声明与定义是什么?
答:类型标识符 函数名(形式参数表列)
{
声明部分
语句
}
(八):形式参数和实际参数的区别?
答:函数在调用时把一些表达式作为参数传递给函数。函数定义中的参数是形式参数,函数的调用者提供给函数的参数是实际参数。
在函数调用前,实际参数的值将被复制到这些形式参数中。
(九):如何编写有多个返回值的C语言函数?
答:可以利用全局变量 ,传递数组指针,传递结构体指针来编写有多个返回值的C语言函数。
(十):如何进行参数的传递?
答:指针变量赋给形参的“值”本身是一个地址,这个地址为形参访问其所指变量创造了可靠条件,
形参可以对指针本身进行操作,也可对指针所指的变量进行操作,但这两种操作都不影响实参本身的值。
数组名本身是一个特殊的指针变量,其值是数组的首地址,因此作为实参时其传给形参的是内存中某指定单元的地址,调用过程中形参数组与实参数组占用同一段内存单元,因此对形参数组的操作也就是对实参数组的操作,对实参数组与形参数组来说数据传递表现为“双向”的,而对实参变量与形参变量而言数据的传递仍然是单向的。
相关文章推荐
- C语言 复杂指针的申明问题 数组指针 指针数组 函数指针 指针函数一览无遗! C/C++求职面试必备考点(四)
- C语言关于函数、数组的一个事例【关于选手评分的问题】
- C语言数组,指针,函数等问题
- C语言 复杂指针的申明问题 数组指针 指针数组 函数指针 指针函数一览无遗! C/C++求职面试必备考点(四)
- 黑马程序员---------C语言 关于数组被当作函数参数传递的问题
- 使用C语言中qsort()函数对浮点型数组无法成功排序的问题
- C语言中数组作为函数参数的问题
- 数组函数归纳
- 学习数组和函数所遇到的问题
- 关于数组以及函数的一些问题与解答
- C语言下数组做参数的退回问题探讨
- 黑马程序员——C语言(函数、数组、字符串、进制、内存分析)总结
- C语言:数组与函数实践
- c语言中函数(linux命令查看依赖类库),数组(内存存储是连续的内存空间),Linux下查看&a,&a[0],a之间的值,可变数组
- C++ 二级指针、函数指针与数组复合类型的问题分析
- C语言之指针、数组和函数(转)
- 数组的首地址和数组的第一个元素的首地址和数组做函数参数的退化问题
- C语言数组问题
- C程序中,strlen是求取字符串长度,若对整形数组,求取的是什么?还有整形数组作函数参数的问题?
- 【C语言】malloc()和free()函数的讲解以及相关内存泄漏问题