Wie Inkrementieren eines C-Pointers durch zwei
Hier ist mein Beispielcode:
float *dstptr;
float *srcptr;
float A[100];
float B[32];
int main(void)
{
int i=0;
while(i < NUM_ITERATION)
{
srcptr = &B[0];
for(i=0; i< 32; i++)
{
*dstptr++ = *srcptr++;
dstptr = circptr(dstptr,1,(float *)&A[0], 100);
}
i++;
}
return 0;
}
Hier *dstptr++ = *srcptr++;
Schritten beide dstptr
und srcptr
durch eine einmal. Aber ich brauche, erhöhen Sie Sie durch zwei.
Gibt es irgendeinen Hinweis, wie man dies in C?
- versuchen Sie, mit
ptr += 2
- Meinst du *dstptr++ = 2 ?
- Ich meine
dstptr += 2
odersrcptr += 2
- Sie nie initialisiert
dstptr
bevor Sie es verwenden. Das ist schlecht.
Vorzugsweise durch mischen nicht mehrere Operatoren im gleichen Ausdruck, die gefährlich und manchmal schwer zu Lesen. Stattdessen, dies zu tun:
Alternativ verwenden Sie die lesbare form, wenn dies eine option:
Seine genannt Zeiger-Arithmetik
Und es erlaubt Ihnen zu tun
sowie Inkrementieren. Oder wenn Sie nicht wollen, zu ändern, die Zeiger
BEARBEITEN:
In Ihrem Fall ändern
nOfElementsToSkip
zu2
.Auch als @entspannen bereits erwähnt, haben Sie zum zuweisen dynamischer Speicher Zeiger sonst dereferenzieren würde führen zu undefiniertem Verhalten.
*(pointer + index)
immerpointer[index]
. Bedeutet genau das gleiche, aber ist so viel klarer.dstptr = &B[0];