c语言指针学习笔记(三)

7.函数和多维数组
在函数中用指针表示多维数组的好处:可以记录行和列的信息
那么如何声明呢?

//表示   int array[rows][cols] 
void sum(int ar[][cols],int rows);
void sum(int [][cols],int );
void sum(int (*ar)[cols],int rows); 

这三种方法都ok啦
然后双重循环就可以找到确定的位置
那为什么不能省略第二个括号的值呢?
因为,指针ar指向一个内含cols个int类型值的数组,所以,让ar有基本单位才是目的
所以,当cols一样时,函数sum就能处理,不论rows的值为多少

一般而言,声明一个指向N维数组的指针时,只能省略最左面方括号的值

8.变长数组
变长数组有一些性质:必须为自动存储类别,这意味着无论在函数中声明还是作为函数形参声明,都不能使用static或extern,而且不能在声明中初始化它们,但可以声明它们。
注意:“变”指的是:在创建数组时,可以使用变量指定数组的维度,但是一旦创建,数组大小则保持不变

正是因为变长数组的存在,单位也就可以改变了,设一个函数即可
变长数组在声明时可以使用const

9.复合字面量
5是int类型字面量,16.6是double类型字面量,"cat"是字符串字面量,'Y’是char类型字面量

int dive[2]={10,20};
和dive数组相同的匿名数组表示如下:
(int [2]){10,20}      //这就是所谓的复合字面量

去掉声明中的数组名,留下int [2]即是复合字面量的类型名
当然了,[ ]里的数值不写也ok的

注意:
复合字面量因为是匿名,所以必须在创建的同时使用它

int * pt;
pt=(int [2]){10,20}; 

而且,还可以把复合字面量作为实际参数传递给相应函数
最后再举一个如何创建二维数组的栗子

int (*pt2)[4];
pt2=(int [2][4]){{1,2,5,7},{8,7,6,9}};

别忘了,复合字面量的定义在最内层的花括号中

好啦,指针就告一段落了,下面会对字符串进行笔记整理。

第一次写博客是唉声叹气的状态,但是,我不想每次看我辛辛苦苦整的笔记的时候,会被这种情绪笼罩,当然也不希望看我博客的人会被我拉进悲伤的漩涡。
希望一切都会好起来,或者换种方式说:希望我可以适应每一种生活状态。同时希望我没有看错高狮,他永远都在,就像爱一样,无处不在~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值