指针的定义及应用

指针的定义及应用,第1张

指针的定义及应用

普通变量在栈空间内,地址由大到小存储

数组,申请一块连续内存,从小到大

指针:

1、指针:等同于地址,数据类型*指针名;

*号:定义指针的时候,类型说明符(说明后面紧跟的变量是一个指针变量)

&号:

2、指针怎么定义,怎么初始化

3、指针怎么使用

4、指针如何引用数组

 4.1:指针怎么指向数组

4.2:指针+1 指针-1指针-指针 指针+指针

4.3:如何通过指针的方式访问数组

4.4:在函数传参的时候,数组名会退化成指针

字符数组

字符数组怎是定义,怎么使用?
字符数组和字符串的区别?

数组名还表示数组首元素的地址

对于指针+1来说,表示加一个格子;指针-1,表示退一个格子。不允许*2或者%2。

在同一数组内,指针-指针代表两个指针中间有多少个格子,指针+指针没有意义

怎么访问数组内元素值

1、通过数组下标                    a r r[7]       7[arr]

2、通过指针解引用去访问   *(p+7)   *(7+arr)

int main()
{
    int arr[10] = {1,2,3,4,5,6,7,8,9,10};
    int *p = arr;
    printf("%dn",arr[0]);
    printf("%dn",*p);
    printf("%dn",p[1]);
    printf("%dn",*(p+1));
    printf("%d %dn",*p,*(p+5));
    printf("%p %pn",&arr[0],&*(p+5));
    printf("%dn",(p+5)-(p));
    return 0;
}
1
1
2
2
1 6
0x16fdff470 0x16fdff484
5

身份z号识别

int ID_card()
{
    char crr[20];
    scanf("%s",&crr,20);
    
    int arr[] = {7,9,10,6,8,4,2,1,6,3,7,9,10,5,8,4,2};
    int temp = 0;
    for(int i = 0; i<17; i++)
    {
        temp += (crr[i]-'0')*arr[i];
    }
    int flg = temp%11;
    
    char drr[] = {'1','0','x','9','8','7','6','5','4','3','2','1'};
    
    return crr[17] == drr[flg];
    
}
int main()
{
    int tag = ID_card();
    if(tag)
    {
        printf("okn");
    }
    else
    {
        printf("身份证号输入正确n");
    }
    ID_card();
    return 0;
}

 折半查找

int Binsearch(int arr[],int len,int key)
{
    assert(arr!=NULL);//安全处理机制
    if(NULL == arr)
    {
        return -1;
    }
    int low = 0;//左边指针
    int high = len -1;//右边指针
    int mid;//每次缩小一半,需要和key比较的中间值
    
    while(low <= high)//当low和high之间范围内 至少有一个值,则继续比较
    {
        mid = (low + high)/2;//low + (high - low)/2//让mid指向现在的范围中间值
        if(arr[mid] == key)
            //如果mid指向的值就是key 则直接返回其下标
        {
            return mid;
        }
        else if(arr[mid] 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5670709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存