zoukankan      html  css  js  c++  java
  • [C++程序设计]用指针变量作函数参数接收数组地址

     1 #include <iostream>
     2 using namespace std;
     3 
     4 void select_sort(int *p, int n)
     5 {
     6     int i, j, k;
     7     for(i = 0; i < n - 1; i++)
     8     {
     9         for(j = i + 1; j < n; j++)
    10         {
    11             if(p[i] > p[j])
    12             {
    13                 k = p[i];
    14                 p[i] = p[j];
    15                 p[j] = k;
    16             }
    17         }
    18     }
    19 }
    20 
    21 void select_sort1(int *p, int n)
    22 {
    23     int i, j, k;
    24     for(i = 0; i < n - 1; i++)
    25     {
    26         for(j = i + 1; j < n; j++)
    27         {
    28             if(*(p + i) > *(p + j))
    29             {
    30                 k = *(p + i);
    31                 *(p + i) = *(p + j);
    32                 *(p + j) = k;
    33             }
    34         }
    35     }
    36 }
    37 
    38 void printf(int *p, int n)
    39 {
    40     for(int i = 0; i < n; i++)
    41         cout << *(p + i) << " ";
    42     cout << endl;
    43 }
    44 
    45 int main()
    46 {
    47     int n = 10;
    48     int a[] = {20, 4, 5, 22, 50, 23, 24, 29, 90, 1001};
    49     select_sort1(a, 10);
    50     printf(a, 10);
    51     return 0;
    52 }

    C++编译系统将形参数组名一律作为指针变量来处理,实际上在函数调用时并不存在一个占有存储空间的形参数组,只有指针变量。

    实参数组名a代表一个固定的地址,或者说是指针型常量,因此要 改变a的值是不可能的。如

    a++; //语法错误,a是常量,不能改变

    而形参数组名是指针变量,并不是一个固定的地址值。它的值是可以改变的。在函数调用开始时,它接收了实参数组首元素的地址,但在函数执行期间,它可以再被赋值。如

    f(array[],int n)

    {  cout<<array;

      array=array+3;

      cout<<*arr<<endl;

    }

  • 相关阅读:
    Android中的sp与wp
    MTK
    linux kernel文件系统启动部分
    Java项目构建基础之统一结果
    线程和线程池的学习
    SpringBoot 中MyBatis的配置
    MyBatis中使用Map传参——返回值也是Map
    OAuth2的学习
    Java 跨域问题
    Spring Cloud 中的 eureka.instance.appname和spring.application.name 意思
  • 原文地址:https://www.cnblogs.com/galoishelley/p/3858311.html
Copyright © 2011-2022 走看看