1. 程式人生 > >c語言:順序表傳參要是指針類型的才能改變順序表

c語言:順序表傳參要是指針類型的才能改變順序表

過去的 oca 頭文件 def blog 文件中 data div log

想在頭文件中初始化順序表,在main函數只能傳參的時候傳的是(sqlList L),調用LocalElem(L,X)是報錯說沒有給L初始化.

原因:調用初始化的函數,傳過去的參數是sqlList L並不能改變實參,雖有後來改為了sqlList *L,就可以了

#pragma once
#define maxSize 100
typedef struct {
int data[maxSize];
int length;
}sqlList;
//初始化一個線性表(n:數組的長度)
void InitList(sqlList *L, int a[], int n) {
int i;
L->length = 0;
for (i = 1;i <= n;i++) {
L->data[i] = a[i - 1];
L->length++;
}
}
//返回第一個比x元素大的元素的位置
int LocateElem(sqlList L,int x) {
int i;
for (i = 1;i <= L.length;i++) {
if (x<L.data[i]) {
return i;
}
}
return i;
}

#include <stdio.h>
#include "head.h"

int main() {
	sqlList L;
	int a[10] = {1,2,3,4,5,6,7,8,9,10};
	/*for (int i = 1;i <= 10;i++) {
		L.data[i] = a[i-1];
	}
	L.length = 10;*/
	InitList(&L,a,10);
	int x = LocateElem(L,5);
	printf("%d\t",x);
}

c語言:順序表傳參要是指針類型的才能改變順序表