第五章数组与指针十个问题及解答

1.数组与指针的区别?

  对于数组来说,数组名就是数组在内存存放的数组首元素地址。指针变量是用于存放变量的地址,可以指向变量,当然也可存放数组的首址或数组元素的地址,也就是说,指针变量可以指向数组或数组元素,对数组而言,数组和数组元素的引用,也同样可以使用指针变量。

 

 

2.c语言对数组处理有效的原因?

1) 除少数编译器出于谨慎会做一些繁琐的规定,c语言的数组下标是在一个很低的层次上处理的;

2) 数组和指针能非常和谐的在一起工作;

3) 数组和指针有可能出现完全相同的情况。

 

 

3.字符串和数组有什么不同?

  数组的元素可以是任意一种类型,而字符串是一种特别的数组,它使用了一种众所周知的、确定长度的规则。一个数组的长度可以是任意的,当数组名用作函数的参数时,函数无法通过数组名本身知道数组的大小,必须引入某种规则。对字符串来说,这种规则就是字符串的最后一个字符是ASCII字符' \0 '

 

 

4.为什么说指针是变量?

1) 系统为指针分配内存空间;

2) 指针有自己的地址;

3) 指针能够存值,但这个值比较特殊---地址。

 

 

5.指针算数运算的两种形式?

第一种:  指针 ± 整数

这种形式只能用于指向数组中某个元素的指针,这类表达式的结果类型也是指针。

对一个指针加n使它向右移动n个元素的位置,减n则是向左移动n个元素的位置。如果进行加减法运算后,指针指向的位置不在数组范围内,会发生数组越界。

第二种:  指针 - 指针

只有当两个指针都指向同一个数组中的元素时,才允许一个指针减去另一个指针。

减法运算的值是两个指针在内存中的距离。

 

 

6.指针常量和常量指针的区别?

常量指针指向的内容不可变,但地址可以改变,即指针可以指向别的地址;而指针常量是指指针本身不可变,而内容可以修改。

 

7.空指针有哪几种用法?

1) 用空指针终止对递归数据结构的间接引用,递归是指一个事物由这个事物本身来定义。

2) 用空指针进行函数调用失败时的返回值。

3) 用空指针作警戒值。

 

 

8.指针数组和数组指针的区别?

数组指针:a pointer to an array,即指向数组的指针

数组指针(也称行指针)

定义 int (*p)[n];

()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度

 

指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针

定义 int *p[n];

[]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1时,则p指向下一个数组元素, *p=a; 这里*p表示指针数组第一个元素的值,a的首地址的值。

 

 

9.指针函数和函数指针的区别?

指针函数:

函数声明,此函数有返回值,返回值为int *,返回型为某个类型的指针 指向函数输入口,本质是函数。

 

函数指针:

函数指针是指向函数的指针变量,即本质是一个指针变量。

声明格式如下: 类型说明符 (*函数名)(参数)

 

 

10.const关键字的特点是什么?

const:修饰一个只读变量。 如 const int cc=3   cc是只读变量。只能说明,不能通过cc这个变量去修改它对应内存空间的值。

const int *p         地址p指向的内容不可改变

int * const p        地址p不可改变

const int * const p   地址p和地址p指向的内容两者皆不可改变

 

原因是const 有就近原则,靠近谁就限制谁。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值