内容纲要

指针的概念

1.内存分配的相关知识

1.先说说系统是如何储存的,系统根据程序中的变量类型分配一定的长度的空间。内存中每一个字节都有一个编号。
2.变量的整个地址是变量名,存取都是通过变量名进行操作
3.直接存取和间接存取
1)直接存取就是一些赋值运算等操作
2)关于间接存取。要了解一个符号“&”,这是取地址运算符,&i是变量i的地址 x=&i;就是把i的内存地址给x

2.指针的定义

变量的指针就是变量的地址,用来存放变量地址的变量,是指针变量。

3.如何定义指针变量

指针变量必须定义为指针类型,在变量前面加一个*号表示该变量是指针变量

类型 *指针变量名;
int *s;

变量名是s
如何用指针变量指向另一个变量

指针变量名=&变量名;
s=&i;

指针作为函数参数

作用;将变量地址传送给调用的形参

数组与指针

指针变量可以指向数组

int a[10];
int *p;
p=&a[0];

上面代码表示指针p指向0号元素,在c++中数组名代表第一个元素[0]所以

p=a;

等价于数组最后一行。
假设p指向了一个数组地址
*p=1;
表示该数组第一个元素赋值为1,在这里可以把指针当做桥看待

p=a;
*(p+1);

当然对于以上情况有有两种方法在上一行所表示的是,指向下角标为1的元素,单独拿出来的意义是,在被指向元素中向后移动一位。
所以访问数组地址的方法

下标法

p[i];

指针法

*(p+i);
根据书上说,他有速度快,占用内存少,我是不信得

有15个数按由大到小的顺序放在的数组中,输入一个数,要求用折半查找法,找出该数是数组中第几个元素的值。如果该数不在数组中,则打印无此数有15个数按由大到小的顺序放在的数组中,输入一个数,要求用折半查找法,找出该数是数组中第几个元素的值。如果该数不在数组中,则打印无此数(修改*2)

```cpp
#include <iostream>
using namespace std;
void Count(int numberss[],int max,int CinNumbers);
void Cins();
int CinNumber;

void main()
{
    int number[15] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
    Cins();
    Count(number,15, CinNumber);
    system("pause");
}
void Count(int x[], int arrL, int CinNumbers)
{
    int med = 0;
    int min = 0;
    int maxlong = arrL ;
    for (int  i = 1; i <= maxlong; i++)
    {
        if (arrL -min>0) {
            med = (arrL + min) / 2;
            if (CinNumbers == x[med])
            {
                cout << "这个数字是第;" << med << "位;" << endl;
                break;
            }else if (x[med] < CinNumbers)
            {
                min = med+1;
            }else if (x[med] > CinNumbers)
            {
                arrL = med;
            }
        }
        else {
            cout << "查无此数;" << endl;
            break;
        }

    }
}
void Cins()
{
    cin >> CinNumber;
}

发表评论