0
点赞
收藏
分享

微信扫一扫

C语言——指针初阶

流沙雨帘 2022-04-16 阅读 77
c语言

文章目录

1.指针的概念(介绍)

2.内存(简介)

3.指针操作

正文

1.指针的概念(介绍)

指针就是地址,那么假设给定一个指针变量pa,用pa存放a的地址,则可以写为  pa = &a(把 a 的地址赋给 pa ,我们也可以理解为 pa “指向” a,当然,pa还可以指向别处,例如 pa = &b)

若要通过 pa 找到 a ,则可以利用 *pa (找出pa指向的值)即可取出 a 。

&是取地址操作符,获得变量(常量)在内存中的地址。

* 是解引用操作符,将指针变量 pa 解引用,即可找到 a。

注意 pa 是指针变量,pa 的类型是 int *        (这里假设a是int类型,如果a是char类型,则pa的类型为char*)

例如:

int main()
{
    int a = 0x11223344;
    int* pa = &a;
    
    printf("%d\n", a);
    printf("%d\n", *pa);
    //对比以上结果,结果相同
}

二级指针

 2.内存(简介)

这个模块简单介绍内存相关内容 

 计算机内存的单位换算

 32位环境下内存大小

下面讲解指针解引用时访问的权限

 

 3.指针操作

通过指针访问数组

#include <stdio.h>
int main()
{
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
                  //0 1 2 3 4 5 6 7 8 9
    int* p = arr;
    int sz = sizeof(arr) / sizeof(arr[0]);
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        printf("%d ", *(p + i));//通过解引用找到数组中的数据
        
    }
    
   return 0; 
}

下面通过指针减指针实现库函数strlen

strlen可用来求字符串的长度

char [] = " abcdef ";(注意:abcdef后还隐藏了字符\0)

strlen可以求\0之前的元素个数

了解了上面这些,我们来用指针减指针的方式实现我们自己模拟的my_strlen

#include <stdio.h>

int my_strlen(char* str)
{
    char* tmp = str;//记录初始位置
    while (str != '\0')
    {
        str++;//末尾位置
    }
    return str - tmp;//两个指针之间元素的个数
}

int main()
{
    char arr[] = " abcdef ";//6
    int ret = my_strlen(arr);
    
    printf("%d", ret);
    return 0;
}

总结

举报

相关推荐

0 条评论