#include <stdio.h>
#include <stdlib.h>
int* removeNegatives(int *v, int *totv){
int i, j, aux=(*totv), t=0;
for(i=0; i<aux; i++){
if(v[i]<0){
t=v[i];
for(j=i; j<=aux; j++){
v[j]=v[j+1];
}
v[(*totv)-1]=t;
aux--;
i=-1;
}
else{
continue;
}
}
totv=&aux;
v=(int*)realloc(v,(*totv)*sizeof(int));
return(v);
}
int main(){
int *totv=NULL, *v=NULL, *z=NULL, i, j=0, a;
printf("How many numbers are you entering?\n");
scanf("%d",&i);
printf("Enter them, then:\n");
totv=&i;
do{
if(j<(*totv)){
scanf("%d",&a);
v=(int*)realloc(v,++j*sizeof(int));
v[j-1]=a;
}
}while(j<(*totv));
printf("\n");
printf("Size before: %d\n",*totv);
z=retiraNegativos(v,totv);
printf("Size after: %d\n",*totv);
printf("\n");
printf("[ ");
for(i=0; i<(*totv); i++){
printf("%d ",z[i]);
}
printf("]");
printf("\n");
free(z);
return(0);
}
我正在根據用戶輸入的負數來調整矢量「v」的大小。指針沒有更新
但問題是,指針「ToTV的」沒有更新後,我稱之爲溫控功能「removeNegatives」。
非常感謝您的幫助!
經典之一(幾十個重複項):參數__including指針__按值傳入C. –
即使它正在「更新」,您會如何期待它的工作?在'removeNegatives'裏面,你讓'totv'指向一個*局部變量*'aux'。當局部變量在函數結束時被銷燬。 – AnT
請正確縮進您的代碼,以便它更具可讀性。 – 2017-06-19 15:32:28