Tôi chỉ tự hỏi nếu có một cách để tạo một mảng con trỏ trỏ đến cột đầu tiên của mỗi hàng trong một dãy số nguyên nhiều chiều. Như một ví dụ, hãy nhìn vào đoạn mã sau:Mảng của con trỏ trỏ đến mảng số nguyên
#include <stdio.h>
int day_of_year(int year, int month, int day);
main()
{
printf("Day of year = %d\n", day_of_year(2016, 2, 1));
return 0;
}
static int daytab[2][13] = {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
int day_of_year(int year, int month, int day)
{
int leap;
int *nlptr = &daytab[0][0];
int *lpptr = &daytab[1][0];
int *nlend = nlptr + month;
int *lpend = lpptr + month;
leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
if (leap)
for (; lpptr < lpend; lpptr++)
day += *lpptr;
else
for (; nlptr < nlend; nlptr++)
day += *nlptr;
return day;
}
Khi tôi viết như thế này dưới đây:
int *p[2];
*p[0] = daytab[0][0];
*p[1] = daytab[1][0];
tôi nhận được một lỗi như thế này:
Error: Array must have at least one element
Error: Variable 'p' is initialized more than once
Error: { expected
Error: Variable 'p' is initialized more than once
Error: { expected
***5 errors in Compile***
tôi đã thay đổi nó như này:
int *p[2];
p[0] = &daytab[0][0];
p[1] = &daytab[1][0];
Tôi vẫn nhận được cùng một lỗi.
tôi biết chúng tôi có thể làm cho một mảng của con trỏ đến chuỗi ký tự như trong những điều sau đây:
char *str[] = {
"One", "Two", "Three",
"Four", "Five", "Six",
"Seven", "Eight", "Nine"
}
Làm thế nào để chúng tôi làm điều đó cho mảng các số nguyên?
"* Nó không làm việc *" là báo cáo lỗi nhiều hay ít giá trị người ta có thể đưa ra. Vui lòng chính xác hơn về lỗi, cảnh báo, sự cố bạn gặp phải, quan sát! – alk
Ví dụ đầu tiên: cơ hội lớn để gây ra Phân đoạn Lỗi bởi dereferencing con trỏ không hợp lệ Ví dụ thứ hai: Bạn có giải thích những gì bạn có nghĩa là "không làm việc"? – MikeCAT
Mã như được hiển thị (sử dụng phương pháp thứ 2) có vẻ phù hợp với tôi. – alk