我的功能不起作用,我不知道為什么,它在進入范圍后結束。你能解釋一下為什么以及如何解決它嗎?我需要使用這些指向陣列的指標來執行此操作。
void generate(int *pa, int *pa2);
void display(int *pa, int *pa2);
int main()
{
srand(time(0));
int size;
printf("Enter size of array\n");
scanf("%d",&size);
int *A=(int*) malloc(size*sizeof(int));
int *ptr=A;
int *pa=&ptr[0];
int *pa2=&ptr[size-1];
generate(pa,pa2);
display(pa,pa2);
return 0;
}
void generate(int *pa, int *pa2)
{
int upper,lower;
int randi;
printf("enter range");
scanf("%d %d",&lower,&upper);
for (int i = 0; i <*pa2; i )
{
randi=(rand() % (upper - lower 1)) lower;
*(pa i) = randi;
}
}
uj5u.com熱心網友回復:
for (int i = 0; i <*pa2; i )
您將按索引迭代與迭代混為一談,直到您擊中指標。這是將陣列末尾的值(即垃圾)與i.
相反,您需要比較pa 1指向pa2. 這一定是<=因為您確實想填寫最后一項。
for (int i = 0; (pa i) <= pa2; i ) {
*(pa i) = ...
}
i但是直接洗掉和增加指標更容易。
void generate(int *start, int *end) {
...
for(int *current = start; current <= end; current ) {
*current = ...;
}
}
但是由于您有大小,因此傳遞大小并按索引迭代會更簡單。
void generate(int *array, int size) {
...
for (int i = 0; i <= size; i ) {
array[i] = ...
}
}
您可以簡化呼叫該函式。A并&A[0]指向同一個記憶體。
generate(A, &A[size-1]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/456432.html
上一篇:在訊息中列出陣列
