Ich frage mich, ob es eine Möglichkeit gibt, ein Array von Zeigern zu machen, die auf die erste Spalte jeder Zeile in einem mehrdimensionalen Array von Ganzzahlen zeigen. Als Beispiel schauen Sie bitte auf den folgenden Code:Arrays von Zeigern, die auf Arrays von Ganzzahlen zeigen
#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;
}
Wenn ich so schreibe unten:
int *p[2];
*p[0] = daytab[0][0];
*p[1] = daytab[1][0];
ich einen Fehler wie diese:
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***
habe ich es wie dies:
int *p[2];
p[0] = &daytab[0][0];
p[1] = &daytab[1][0];
Ich bekomme immer noch die gleicher Fehler
Ich weiß, dass wir ein Array von Zeigern auf Zeichenketten, wie in der folgenden machen:
char *str[] = {
"One", "Two", "Three",
"Four", "Five", "Six",
"Seven", "Eight", "Nine"
}
Wie tun wir das für Arrays von ganzen Zahlen?
"* Es funktioniert nicht *" ist das mehr oder weniger wert Fehlerbericht eine geben kann. Bitte präzisieren Sie den Fehler, die Warnung, die Fehlfunktion, die Sie erhalten, beobachten Sie! – alk
Erstes Beispiel: große Chance, Segmentierungsfehler durch Dereferenzierung eines ungültigen Zeigers zu verursachen. Zweites Beispiel: Würden Sie erklären, was Sie mit "funktioniert nicht" meinen? – MikeCAT
Der Code wie gezeigt (mit dem 2. Ansatz) sieht gut aus. – alk