C语言几个知识点
1.指针数组和数组指针
- 指针数组
形如 type *ptr_arr[n] ,根据C语言声明规则,[]的优先级比*的优先级高,因此ptr_arr先和[]结合生成一个数组,表明此时ptr_arr是一个数组,然后再和*结合。整个表达式表示数组元素为type*类型的一个一维数组。
- 数组指针
形如 type (*arr_ptr)[n],根据C语言声明规则,由于增加括号,app_ptr先和*结合生成一个指针,整个表达式表明arr_ptr是一个指向type类型的一个一维数组的指针。
用法:一般用来指向操作二维数组中的一维数组,如:
type *arr[m][n];
arr_ptr=arr; //此时arr_ptr指向arr[0],即*arr_ptr==arr[0],(*arr_ptr)[k]==arr[0][k]
当进行自增操作时,arr_ptr将跳过二维数组的一整行,如下:
arr++;//即*arr_ptr==arr[1],(*arr_ptr)[k]==arr[1][k]
因此数组指针常用作参数来传递二维数组,如:
void func(type (*arr_ptr)[n],...) 或者
void func(type arr_ptr[][n],...);
- 两者区别:ptr_arr是一个数组变量,占有n个指针类型的存储空间; arr_ptr是一个指针变量,只占有一个指针类型的存储空间。
浙公网安备 33010602011771号