c语言:顺序表传参要是指针类型的才能改变顺序表

想在头文件中初始化顺序表,在main函数只能传参的时候传的是(sqlList L),调用LocalElem(L,X)是报错说没有给L初始化.

原因:调用初始化的函数,传过去的参数是sqlList L并不能改变实参,虽有后来改为了sqlList *L,就可以了

#pragma once#define maxSize 100typedef 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);
}
时间: 2024-10-17 00:53:47

c语言:顺序表传参要是指针类型的才能改变顺序表的相关文章

C语言-传值,传地址(指针),传引用区别和联系

很多编程老手对传值,传地址,传引用的区别搞的也不会很清楚,今天我就花一点时间再次介绍一下这些概念的本质. 其实,不用分为三类,只有两类即可.传值和传引用.为什么会出现传地址(即传指针)呢?本质就是大家一致对传值和传地址概念的理解错误导致,也是对指针的概念的理解错误导致. 指针:(简单补充一下)其实很简单,指针就是一个变量,如果非要说是一个特殊的变量也不为过,因为指针的初始化和解引用等不同的操作方式而已.就内存的分布来说,指针和一个变量在内存中存放是没有任何区别的,无非指针存放的是变量的地址,就是

引用传参与指针传参的区别

Reference: https://blog.csdn.net/u013130743/article/details/80806179 概念: 引用传参:引用是变量的别名.引用传参传递进形参列表的是实参的别名,在函数的执行中也会在栈空间上开辟存储空间,存储形参的地址 (也就是实参的地址).对形参的任何操作都会间接寻址到实参.也就是在函数中对形参变量做的任何改变都会影响到实参变量. 指针传参:指针传参本质上是值传参.指针在形参列表中传递的是实参的地址.也就是说,指针的值的实参的地址.在函数的执行

华为机试 小结 关于函数传参修改的问题

第一第二道题比较简单,第三道题还好,就是一个递归,但是传参的时候出了个问题,我做了一个flag来标志,但是函数中修改了flag之后,但是退出函数之后,flag并没有改变,想起来,应该是没有传入指针,故此处进行学习. http://blog.csdn.net/herecles/article/details/6072523 在C++中,如果函数的实参的类型是数据类型比较大的数据类型,这是如果使用一般传参就会有很大的不方便,这是如果能够传递一个地址或者是对原来参数的一个引用对提高性能会有很大的帮助.

函数定义,返回值,传参,命名空间,闭包

函数的返回值: return是返回给函数的调用者 函数外面的代码想要获取函数的执行结果,就可以在函数里,用return语句把结果返回. 注意:在函数的执行过程中主要遇到return语句,就会停止执行并返回结果, so可以理解为return语句代表着函数的结束 如果未在函数中指定return,那这个函数的返回值为none 函数的返回值,可以返回一个函数名(可以将嵌套函数里的执行结果return给函数体外,进行执行) return永远且只能返回一个值,,如果返回多各值呢? def func1(nam

C# 中传参中的OUT 和 ref 区别 笔记

//out传参前需要对参数进行赋值处理,ref则不需要.//out.ref 传参都可以对值进行改变 1 static void Main(string[] args) 2 { 3 int I = 10; 4 //int J = 10; 5 //int I; 6 int J; 7 //int[] k=new int[5]{1,2,3,4,5}; 8 int[] k = new int[5]; 9 //int[] l = new int[5]{1,2,3,4,5}; 10 int[] l = new

Web API中的传参方式

在Restful风格的WebApi的里面,API服务的增删改查,分别对应着Http Method的Get / Post / Delete /Put,下面简单总结了Get / Post /Delete /Put的传参方式 一.Get传参 get设计成传输小数据,而且最好是不修改服务器的数据,所以浏览器一般都在地址栏里面可以看到,数据放在url的QueryString中. (一)简单类型 $(function () { $.ajax({ type: 'get', url:'http://localh

Java自学-类和对象 传参

Java中的传参 变量有两种类型 基本类型 和类类型 参数也是变量,所以传参分为 基本类型传参 类类型传参 步骤 1 : 基本类型传参 基本类型传参 在方法内,无法修改方法外的基本类型参数 public class Hero { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 public Hero(){ } //回血 public void huixue(int xp){ hp = hp + xp

MySQL表的四种分区类型

MySQL表的四种分区类型 一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区.当然也可根据其他的条件分区. 二.为什么要对表进行分区 为了改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率. 分区的一些优点包括: 与单个磁盘或文件系统分区相比,可以存储更多的数据. 对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有

关于C语言中二维数组传参————————【Badboy】

直接上代码: #include void Fun(int *a[],int m,int n)// { printf("%d\t",*a);//[0][0] /* int e[2][2][2]={8,7,6,5,4,3,2,1}; int *f,***g; g=e; f=e;//有警告,但不会报错 printf("%d\n",*f); */ } /*解释: Fun()中的int *a[2]表示定义指针数组a[2],a[0],a[1]存储的都是指针, a表示的是数组的首