C和指针读书笔记-第8章(数组)

来源:互联网 发布:智能化网点优化建议 编辑:程序博客网 时间:2024/05/09 17:39

1.数组名的值是一个指针常量,也就是数组第1个元素的地址,它的类型取决于数组元素的类型。记住是指针常量。

2数组具有确定数量的元素,指针只是一个标量值。只有当数组名在表达式中使用时,编译器才为它产生一个指针常量。

在程序完成链接之后,内存中数组的位置是固定的。

3.你不能使用赋值符把一个数组的所有元素复制到另外一个数组,必须使用一个循环。

4.数组下标不会比指针更有效率,但指针有事会比下标更有效率。

5.形参被声明为一个指向const字符的指针。具有良好的阅读习惯,仅观察函数的原型就能发现该数据不会修改,编译器可以捕捉到试图修改该数据的错误,这类声明允许向函数传递const参数。

6.声明数组参数时最好使用指针。

7数组元素的不完整初始化,后面被初始化为0.

8.int vector【】={1.2.3.4.5};

可以自动计算数组长度。

9用''表示字符。

10“hello”当用于初始化一个字符数组时,它就是一个初始化列表,在其他地方,它都表示一个字符串常量。

11.声明一个指向整型数组的指针

int  (*p)[10];

下标优先级高于解引用,但是括号高于下标。所以先执行间接访问,p还是一个指针。但是指向什么?所以p是指向某种类型的数组。

对p执行间接访问操作得到的是个数组,对数组进行下标引用操作得到的是一个整型值。所以p是一个执行整型数组的指针。

12指针数组

int   *api[10]

先执行小标引用,因此api是某种类型的数组。然后执行间接访问操作,对数组的某个元素执行间接访问之后,是一个整形值。所以api肯定是一个数组。

元素类型是指向整形的指针。

13.

char const *keyword_table[]

keyword_table是一个数组。类型是执行char的指针。

其中keyword_talbe是指向这个数组的。

要想kwp=keyword_table

必须要这样定义  char const ** kwp,对kwp解引用之后,是一个只需向char型的指针。再次解引用之后是char类型。

 

12.多维数组a[3][8]相当于a【3】【】其中a【0】有8个,等等。


13.数组形参可以声明为数组,也可以声明为指针。这两种声明形式只有当他们作为函数的形参时才是相等的。

14.int   a【16】;

   int   *p

其中数组  的&a  和a  和&a[0]其实是一个意思



0 0
原创粉丝点击