指针操作与递归:深入解析与应用
1. 指针操作
1.1 多维数组函数参数
在定义接受多维数组的函数时,除了第一维外,其他维度都必须指定,这样在访问元素时才能进行指针运算。例如:
int g(int a[][2]) {
a[2][0] = 5;
return 0;
}
以一个 3 行 2 列的二维整数数组为例,在 C 语言中,元素按行优先顺序存储在内存中递增的地址处。这意味着第一行的两个整数先存储,接着是第二行的两个整数,最后是第三行的两个整数。因此,要访问除第一行外的任何行中的元素,我们必须确切知道每行要跳过多少个元素才能访问后续行中的元素。
1.2 指针作为指针参数
当函数需要修改传入的指针时,通常会将指向该指针的指针作为参数传递。例如 list_rem_next 操作,用于从链表中移除一个元素:
int list_rem_next(List *list, ListElmt *element, void **data);
由于该操作必须修改指针 data 使其指向从列表中移除的数据,因此我们必须传递指针 data 的地址,以模拟按引用传递参数。
1.3 通用指针和类型转换
1.3.1 通用指针
在 C 语言中,指针变量和其他变量一样有类型。但有时我们不关心指针引用
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



