C Primer Plus第十章学习笔记和复习题

一、数组
声明一个简单的一维数组形式如下:

type name [ size ];

对于 C 语言而言,不能把整个数组作为参数传递给函数,但是可以传递数组的地址。

然后函数可以使用传入的地址操控原始数组。

如果函数没有修改原始数组的意图,应在声明函数的形式参数时使用关键字const。

如何修改原始数组:在被调函数中可以使用数组表示法或指针表示法,无论用哪种表示法,实际上使 用的都是指针变量。

 二维数组即是数组的数组,下面声明了一个二维数组:

double sales[5][12];

该数组名为sales,有5个元素(一维数组),每个元素都是一个内含12 个double类型值的数组。

二、指针
数组和指针的关系

实际上,C 语言标准在描述数组表示法时确实借助了指针。

也就是说,定义ar[n]的意思是*(ar + n)

可以认为*(ar + n)的意思是“到内存的ar位置,然后移动n个单 元,检索储存在那里的值”。

顺带一提,不要混淆 *(dates+2)和*dates+2。

间接运算符(*)的优先级 高于+,

所以*dates+2相当于(*dates)+2:

*(dates + 2)    // dates第3个元素的值

*dates + 2   // dates第1个元素的值加2

 

 三、复习题
1.正确声明以下各变量(定义数组):

a.digits是一个内含10个int类型值的数组

int digits[10]

b.rates是一个内含6个float类型值的数组

float rates[6]

c.mat是一个内含3个元素的数组,每个元素都是内含5个整数的数组

int mat[3][5]

d.psa是一个内含20个元素的数组,每个元素都是指向int的指针

int *psa[20]

e.pstr是一个指向数组的指针,该数组内含20个char类型的值

char (*pstr)[20]

2.正确声明以下各变量(为数组赋值):

a.声明一个内含6个int类型值的数组,并初始化各元素为1、2、4、8、 16、32

a.int sextet[6] = {1, 2, 4, 8, 16, 32};

b.用数组表示法表示a声明的数组的第3个元素(其值为4)

b.sextet[2]

c.假设编译器支持C99/C11标准,声明一个内含100个int类型值的数组, 并初始化最后一个元素为-1,其他元素不考虑

c.int lots[100] = { [99] = -1};

d.假设编译器支持C99/C11标准,声明一个内含100个int类型值的数组, 并初始化下标为5、10、11、12、13的元素为101,其他元素不考虑

d.int pots[100] = { [5] = 101, [10] = 101,101, 101, 101};

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值