| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1497 人关注过本帖
标题:数据结构大神有吗,新手接触数据结构,一脸懵逼。。
只看楼主 加入收藏
你若为王
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2015-11-15
结帖率:40%
收藏
已结贴  问题点数:20 回复次数:2 
数据结构大神有吗,新手接触数据结构,一脸懵逼。。
Status InitList_Sq(SqList &L)    //定义
主函数: InitList_Sq(L);//其中  SqList L;
就针对参数而言,为什么是这样调用函数呢?
2016-10-11 20:01
反脑控2016
Rank: 4
等 级:业余侠客
威 望:2
帖 子:108
专家分:212
注 册:2016-9-2
收藏
得分:20 
第一,这不是java语言。
第二,如果是C/C++语言,这是传引用。
函数的参数传递方式
传值方式
实参必须是常量、有确定值的变量或有确定值的表达式,而形参必须是变量。
函数调用时,给形参分配内存空间,将实参的值拷贝给形参,之后的函数执行中形参和实参就脱离了关系,谁都不影响谁。
实参与形参的数据类型应该一致,如果不一致,编译器将实参转换为所需类型,如果不能进行转换,将发生“类型不匹配”错误。
#include <iostream>
using std::cout;
using std::endl;
using std::ends;
void swap(int,int);
void main()
{
    int a=15,b=8;
    swap(a,b);
    cout<<"a="<<a<<ends<<"b="<<b<<endl;//a=15 b=8
}
void swap(int x,int y)
{
    int temp;
    temp=x;
    x=y;
    y=temp;
}
传址方式
情况一:对变量的操作
#include <iostream>
using std::cout;
using std::endl;
using std::ends;
void swap(int*,int*);
void main()
{
    int a=15,b=8;
    swap(&a,&b);
    cout<<"a="<<a<<ends<<"b="<<b<<endl;//a=8 b=15
}
void swap(int*x,int*y)
{
    int temp;
    temp=*x;
    *x=*y;
    *y=temp;
}
情况二:以一维数组的形式处理一维数组
#include <iostream>
using std::cout;
using std::endl;
double average(double array[], int count);
int main(void)
{
    double values[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 };
    cout <<average(values, (sizeof values)/(sizeof values[0])) << endl;//5.5
    return 0;
}
double average(double array[], int count)//形参表中数组名值可以被改变
{
    double sum(0.0);
    for(int i = 0; i < count; i++)
        sum += array[i];// 可以改为sum += *array++;
    return sum/count;
}
情况三:以指针形式处理一维数组
#include <iostream>
using std::cout;
using std::endl;
double average(double* array, int count);
int main(void)
{
    double values[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 };
    cout <<average(values, (sizeof values)/(sizeof values[0])) << endl;//5.5
    return 0;
}
double average(double* array, int count)
{
    double sum(0.0);
    for(int i = 0; i < count; i++)
        sum += *array++;
    return sum/count;
}
情况四:处理多维数组
#include <iostream>
using std::cout;
using std::endl;
double yield(double beans[][4], int count);
double yield1(double beans[], int count);
int main(void)
{
    double beans[3][4] =  {   { 1.0,  2.0,  3.0,  4.0 },
                           { 5.0,  6.0,  7.0,  8.0 },
                           { 9.0, 10.0, 11.0, 12.0 }   };
    cout <<yield(beans, sizeof beans/sizeof beans[0])<< endl;//78
    cout<<yield1(&beans[0][0],sizeof beans/sizeof beans[0][0])<<endl;//78
    return 0;
}
double yield(double beans[][4], int count)//以多维数组的形式处理多维数组
{
    double sum(0.0);
    for(int i = 0; i < count; i++)
        for(int j = 0; j < 4; j++)
            sum += beans[i][j];
    return sum;
}
double yield1(double beans[], int count)//以一维数组的形式处理多维数组
{
    double sum(0.0);
    for(int i=0;i<count;i++)
        sum+=beans[i];
    return sum;
}
情况五:处理字符串
#include <iostream>
using namespace std;
void copy_string(char*from,char*to)
{
    for(;*from!=’\0’;from++,to++)
    *to=*from;
    *to=’\0’;
}
void main()
{
    char a[20]=”c language”;
    char b[20]=”very good”;
    copy_string(a,b);
    cout<<a<<endl;
    cout<<b<<endl;
}
传引用方式
例一:左值引用
#include <iostream>
using std::cout;
using std::endl;
using std::ends;
void swap(int&,int&);
void main()
{
    int a=15,b=8;
    swap(a,b);
    cout<<"a="<<a<<ends<<"b="<<b<<endl;//a=8 b=15
}
void swap(int&x,int&y)
{
    int temp;
    temp=x;
    x=y;
    y=temp;
}
例二:右值引用
#include <iostream>
using std::cout;
using std::endl;
int incr10(int&& num);
int main(void)
{
    int num=3,value=6;      
    cout<<incr10(value+num)<<endl;//19
    cout << incr10(5)<<endl;//15
    //incr10(num),incr10(value);//error
    cout << endl;
    return 0;
}
int incr10(int&& num)
{
    num += 10;                 
    return num;
}
将右值引用形参从左值转换为右值,使用std::move()库函数将一个左值转换为右值。

我学编程,总爱用自己的语言将所学的东西描述下来,渐渐的,一篇篇的文章,看起来像一个个杰作。
2016-10-11 20:37
反脑控2016
Rank: 4
等 级:业余侠客
威 望:2
帖 子:108
专家分:212
注 册:2016-9-2
收藏
得分:0 
如果看不懂,指出看不懂的地方。我再进一步解释。

我学编程,总爱用自己的语言将所学的东西描述下来,渐渐的,一篇篇的文章,看起来像一个个杰作。
2016-10-11 20:45
快速回复:数据结构大神有吗,新手接触数据结构,一脸懵逼。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034762 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved