zoukankan      html  css  js  c++  java
  • c++之指针练习

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 //要通过函数调用来改变主调函数中某个变量的值:
     6 //(1) 在主调函数中,将该变量的地址或者指向该变量的指针作为实参
     7 //(2) 在被调函数中,用指针类型形参接受该变量的地址 
     8 //(3) 在被调函数中,改变形参所指向变量的值
     9 void swap2(int* x,int* y){
    10     int t;
    11      t = *x;
    12     *x = *y;
    13     *y = t;
    14 }
    15 
    16 //找出一个数组内的最大数
    17 //先声明一个指针变量,并让他指向数组首元素的地址
    18 //使用for循环让指针指向的数与数组中的每一个数进行比较
    19 //每比较一次就让指针指向比较后的最大数
    20 //最后就指向数组中最大树的指针返回去
    21 int* swap1(int* a,int len){
    22     int* t = a;
    23     for(int i = 1;i < len;i ++){
    24         if(*t<*(a + i)){
    25             t = a + i;
    26         }
    27     }
    28     return t;
    29 }
    30 
    31 //使用指针的加法运算将一个数组内的所有元素相加,并就结果返回
    32 //声明一个指针变量,并使其指向数组a的首元素地址
    33 //使用指针遍历数组内的所有元素,并加到变量sum中,最后int类型的值将其返回
    34 int swap3(int* a,int len){
    35     int* p = a;
    36     int sum = 0;
    37     for(int i = 0;i<5;i++){
    38         //指针的加法运算,指针变量每加一次1,指针就会向后移动该指针类型所占的字节数
    39         //也就是说,指针变量每加一次1,指针就会指向数组的下一个元素
    40         sum += *p ++;
    41     }
    42     return sum;
    43 }
    44 
    45 //使用冒泡法将数组的元素排序
    46 void swap4(int* array,int len){
    47     int temp = 0;
    48     for(int i = 1;i < len;i ++){
    49         for(int j = 0;j<len - i;j ++){
    50             if(array[j]>array[j+1]){
    51                 temp = array[j];
    52                 array[j] = array[j+1];
    53                 array[j+1] = temp;
    54             }
    55         }
    56     }
    57 }
    58 
    59 void main(){
    60     //计算数组之和
    61     int a[] = {1,2,3,4,5};
    62     int aSize = sizeof(a)/sizeof(int);
    63     int sum = swap3(a,aSize);
    64     cout << "数组a的所有元素之和是:" << sum << endl;
    65 
    66     //计算数组中的最大数
    67     int b[] = {2,5,67,25,4,7};
    68     int bSize = sizeof(b)/sizeof(int);
    69     int* t = swap1(b,bSize);
    70     cout << "数组a的所有元素的最大数是:" << *t << endl;
    71 
    72     //交换两个变量的值
    73     int x = 1, y = 2;
    74     int *pa = &x, *pb = &y;
    75     cout << "x="<<x<<";y="<<y<<endl;
    76     swap2(pa,pb);
    77     cout << "After calling swap2:" << "
    " << "x="<<x<<";y="<<y<<endl;
    78 
    79     //数组排序
    80     int array[5];
    81     cout << "请输入5个整数" << endl;
    82     for(int i = 0;i<5;i++){
    83         cin >> array[i];
    84     }
    85     cout << "排序前:";
    86     for(int i = 0; i < 5 ; i ++){
    87         cout << array[i] << "	" ;
    88     }
    89     swap4(array,5);
    90     cout << "
    排序后:";
    91     for(int i = 0; i < 5 ; i ++){
    92         cout << array[i] << "	" ;
    93     }
    94 }
  • 相关阅读:
    记录log中的16进制和ASCII码字符输出
    有效的沟通技巧
    时间的真谛
    目标设定与时间管理
    第四代时间管理
    什么是高效沟通
    error LNK1104: cannot open file 错误解决方案
    js压缩工具1.0界面绘制
    时间管理的定义与目的
    JArgs命令行选项解析>Java套件
  • 原文地址:https://www.cnblogs.com/Smart-Du/p/4314184.html
Copyright © 2011-2022 走看看