#include<stdio.h>
#define SIZE 10
typedef struct List {
int data[SIZE];
int length;
} SqList;
int ListminDelete(SqList& L,SqList* P){
SqList *A=&L,*B=P;
printf("%p %p",A,B) ;
printf("函数内指针P的值为:%p\n",P);
printf("函数内L的值为:%p\n",L);
printf("函数内&L的值为%p\n",&L);
// 判断顺序表
if (L.length<=0) {
printf("长度为0");
return false;
}
int min = 10000;
int min_index = 0;
int lest = 0;
// 遍历,先找出最小值
for(int i = 0;i<L.length;i++){
if(min>L.data[i]){
min = L.data[i];
min_index = i;
}
}
if(min_index!=L.length-1){
L.data[min_index] = L.data[L.length-1];
}
else{
L.data[min_index] = 0;
}
L.length--;
return min;
}
void printList(SqList L){
for(int i = 0; i < L.length ; i++){
printf("%d ",L.data[i]);
}
}
int main() {
SqList L = {{2,5,3,6,4,7,9},7};
printList(L);
printf("\nL的值为:%p\n&L的值为:%p",L,&L);
printf("\n");
int t = ListminDelete(L,&L);
printf("\n");
printf("%d",t);
printf("\n");
printList(L);
return 0;
}
运行结果为
明明函数内的L的地址是跟外面L一样的,也就是说他们是同一个L才对,但是为什么他们的值不一样?