面试题答案
一键面试#include <stdio.h>
// 函数声明
int* countElementsPerRow(int *arr[], int rows);
int main() {
int *arr[] = { (int[]){1, 2}, (int[]){3, 4, 5}, (int[]){6} };
int rows = sizeof(arr) / sizeof(arr[0]);
int *result = countElementsPerRow(arr, rows);
for (int i = 0; i < rows; i++) {
printf("第 %d 行元素个数: %d\n", i + 1, result[i]);
}
free(result);
return 0;
}
int* countElementsPerRow(int *arr[], int rows) {
int *count = (int*)malloc(rows * sizeof(int));
if (count == NULL) {
perror("内存分配失败");
exit(EXIT_FAILURE);
}
for (int i = 0; i < rows; i++) {
int *row = arr[i];
int j = 0;
while (row[j] != '\0') {
j++;
}
count[i] = j;
}
return count;
}
上述代码中:
countElementsPerRow
函数用于计算每一行的元素个数,并返回一个包含每行元素个数的数组。- 在
main
函数中,首先定义了不规则二维数组arr
,然后调用countElementsPerRow
函数获取每行元素个数的数组,并输出结果。最后释放动态分配的内存。