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]其实是一个意思