Ich versuche, meinen Code neu zu schreiben, der das Benutzereingabearray übernimmt, zu der Funktion geht und Nullen zwischen jeder Zahl hinzufügt und sie in Array 2 speichert. Mein Quellcode funktioniert gut, aber ich habe Probleme beim Versuch Um es so zu machen, dass es Zeigerarithmetik verwendet, nur damit die Funktion jedes Array-Element besucht, kann es kein Subscripting sein. Was können Sie mir über meinen Code oder Vorschläge dazu sagen?C array Zeigerarithmetik
Quellcode:
#include <stdio.h>
void insert0(int n, int a1[], int a2[]);
int main(void) {
int i;
int n;
printf("Please enter the length of the input array: ");
scanf("%d", &n);
int a[n];
int b[2*n];
printf("Enter %d numbers for the array: ", n);
for (i = 0; i < n; i++){
scanf("%d", &a[i]);
}
insert0(n, a, b);
printf("Output array:");
for (i = 0; i < 2*n; i++){
printf(" %d", b[i]);
printf("\n");
}
return 0;
}
void insert0(int n, int a[], int b[]) {
int i, j = 0;
for(i = 0; i < n; i++, j+=2){
b[j]= a[i];
b[j+1] = 0;
}
}
Mein Arithmetik:
#include <stdio.h>
void insert0(int n, int *a1, int *a2);
int main(void) {
int i;
int n;
printf("Please enter the length of the input array: ");
scanf("%d", &n);
int a1[n];
int a2[2*n];
printf("Enter %d numbers for the array: ", n);
for (i = 0; i < n; i++){
scanf("%d", &a2[i]);
}
//not sure if this is how you call it, I've seen it called with arr
insert0(n, a1, a2);
printf("Output array:");
for (i = 0; i < 2*n; i++){
printf(" %d", a2[i]);
printf("\n");
}
return 0;
}
void insert0(int n, int *a1, int *a2) {
int *p;
int j = 0;
// I think I translated this properly
for(p = a1; p < a1+n; p++, j+=2){
a2+j = a1+p;
//unsure how to get a2[j+1] to still work here with pointer
a2(j+1) = 0;
}
}
Würde der DVer bitte kommentieren, um die Antwort zu verbessern? Danke – user3078414
Ihre Antwort ist solide und leicht zu demonstrieren, wie Zeigerarithmetik zu verwenden, meiner Meinung nach (ein Anfänger zu Zeigerarithmetik) es ist geradlinig und muss nicht verbessert werden. Ich würde es benutzen und wahrscheinlich in Zukunft wieder darauf schauen, wenn ich Zeigerarithmetik verwenden muss. – user6124417