数组作为方法参数时的一些意外情况

数组作为方法参数时的一些意外情况

今天在刷题时,使用数组作为方法的参数,出现了一些意外情况.

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5
 6 namespace MyArray
 7 {
 8     class Program
 9     {
10         static void Main(string[] args)
11         {
12             int[] nums = { 1, 2, 4, 5, 3, 2, 5, 6, 3 };
13             Console.WriteLine("Array numbers:");
14             foreach (int num in nums)
15                 Console.Write(num + "     ");
16
17             Sort(nums);
18             Console.WriteLine("\nAfter Sort:");
19             foreach (int num in nums)
20                 Console.Write(num + "     ");
21
22             Reverse(nums);
23             Console.WriteLine("\nAfter Reverse:");
24             foreach (int num in nums)
25                 Console.Write(num + "     ");
26
27             Change(nums);
28             Console.WriteLine("\nAfter Change:");
29             foreach (int num in nums)
30                 Console.Write(num + "     ");
31
32             SortAndChange(nums);
33             Console.WriteLine("\nAfter SortAndChange:");
34             foreach (int num in nums)
35                 Console.Write(num + "     ");
36
37             DistinctAndChange(nums);
38             Console.WriteLine("\nAfter DistinctAndChange:");
39             foreach (int num in nums)
40                 Console.Write(num + "     ");
41
42             Console.Read();
43         }
44
45         static void Sort(int[] nums)
46         {
47             nums = (from l in nums orderby l select l).ToArray();
48         }
49
50         static void Reverse(int[] nums)
51         {
52             nums = nums.Reverse().ToArray();
53         }
54
55         static void Change(int[] nums)
56         {
57             for (int i = 0; i < nums.Length - 1; i++)
58                 nums[i] = nums[i + 1];
59         }
60
61         static void SortAndChange(int[] nums)
62         {
63             nums = (from l in nums orderby l select l).ToArray();
64             for (int i = 0; i < nums.Length - 1; i++)
65                 nums[i] = nums[i + 1];
66         }
67
68         static void DistinctAndChange(int[] nums)
69         {
70             int[] result = nums.Distinct().ToArray();
71             for (int i = 0; i < nums.Length - 1; i++)
72                 nums[i] = nums[i + 1];
73         }
74     }
75 }

结果:

时间: 2024-08-28 14:36:34

数组作为方法参数时的一些意外情况的相关文章

前台请求参数与后台方法参数一致与不一致的情况

1. 函数参数名与请求参数名保持一致 @RequestMapping("/delete")@ResponseBodypublic JsonResult delete(Long id){ 2. 函数参数名与请求参数名保持不一致 @RequestMapping(value = "/add", method = RequestMethod.POST)public AjaxResult save(@RequestBody Product product) { @Reques

c# 方法参数(传值,传引用,ref,out,params,可选参数,命名参数)

 一.方法参数的类型----值类型和引用类型 当方法传递的参数是值类型时,变量的栈数据会完整地复制到目标参数中即实参和形参中的数据相同但存放在内存的不同位置.所以,在目标方法中对形参所做的更改不会对调用者的初始变量产生任何影响. 当方法传递的参数是引用类型是,只是将变量的引用复制到目标参数中,实参和形参的引用指向内存中的同一位置.所以,在目标方法中对形参所做的更改会影响调用者的初始变量. 二.一些特殊的方法参数 1.引用参数---ref (使值类型的变量做方法参数时也可以传引用) 一些数据类型(

Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API

不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权限修饰符,默认访问, 类,方法,成员变量 private 权限修饰符,私有访问, 方法,成员变量 static 静态修饰符 方法,成员变量 final 最终修饰符 类,方法,成员变量,局部变量 abstract 抽象修饰符 类 ,方法 我们编写程序时,权限修饰符一般放于所有修饰符之前,不同的权限修饰

C语言中数组名作为参数进行函数传递

用数组名作函数参数与用数组元素作实参有几点不同. 1) 用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的.因此,并不要求函数的形参也是下标变量.换句话说,对数组元素的处理是按普通变量对待的.用数组名作函数参数时,则要求形参和相对应的实参都必须是类型相同的数组,都必须有明确的数组说明.当形参和实参二者不一致时,即会发生错误. 2) 在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元.在函

二维数组作为函数参数

#include<stdio.h> //#include<> //二位数组作为函数参数时,可以不指定第一个下标 void print_buf(int (*p)[3],int a,int b) //void print_buf(int p[][3],int a,int b) { int i,j; for(i = 0 ; i < a; i++) { for(j = 0; j < b; j++) { printf("p[%d][%d] = %d ",i,j

c 数组做为形参时 该参数退化为指针

当数组做为函数的形参的时候,该参数退化为指针,并且是无法直接求得数组的大小. 传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址. void func(int array[10]) void func(int array[]) void func(int *array) 所以以上三种函数声明完全等同. 实际情况是,数组做参数,完全无法按值传递.这是由C/C++函数的实现机制决定的. 通常计算数组大小的方式如下: int len = sizeof(arr)/sizeof(type)

JAVA笔记4__static关键字/对象数组/foreach/方法的可变参数

/** * static关键字:修饰属性(实质就是全局变量).方法(无需本类的对象即可调用此方法).类. * 1.static方法只能调用static方法 * 2.static方法只能访问static数据 * 3.static方法不能以任何方式引用this或super */ public class Main { public static void main(String[] args) { A a = new A(); a.val = 2; A a1 = new A(); a1.val =

二维数组作为函数参数的几种方法

#include <stdio.h> #define N 5 void fun1(int a[N][N]) { int i,j; for (i=0;i<N;i++) { for (j=0;j<N;j++) { if (i>j) { a[i][j]+=a[j][i]; a[j][i]=0; } } } } void fun2(int **a,int m,int n) { int i,j; for (i=0;i<m;i++) { for (j=0;j<n;j++) {

【Java学习笔记之二十七】Java8中传多个参数时的方法

java中传参数时,在类型后面跟"..."的使用: public static void main(String[] args){       testStringArgs();//无参数传入       testStringArgs("one");//一个参数传入       testStringArgs("one","two","three");//3个String参数传入       testStri