C语言基础——指针

本文详细探讨了C语言中的指针,包括基本概念、运算、与数组的关系、指针与字符串的交互,以及函数指针的使用。讲解了指针在数组、字符串和函数中的应用,并强调了指针运算中的注意事项,如指针加减法涉及的数据类型字节数。最后,文章总结了指针在C语言中的重要性和使用场景。
摘要由CSDN通过智能技术生成

指针的基本概念

指针:就是内存中某个字节地址编号
指针变量:用来存放地址变量
定义指针变量格式:指针所指向的数据类型 * 变量名
指针变量 8个字节的存储空间
没有初始化的指针里面放的也是垃圾值,这种没有指向指针我们成为野指针
        指针的初始化方式
  1、先定义再进行初始化
    int *p;
    p = &a;
  2、定义同时进行初始化
    int *pp = &a;

指针注意点

     1、指向是什么样类型的指针将来指针存放什么类型的变量的地址
     2、指针变量不可直接赋值一个整形常量,只能存放变量地址
     3、指针没有初始化不可以访问指针指向存储空间,里面是垃圾值,是一个没有指向指针,也就是说是一个野指针;如果你操作一个野指针就回导致系统崩溃
     4、指针的指向是可以改变的
     5、多个指针可以指向同一变量

     定义指针的目的:

     1、使用地址代替值拷贝 可以节省内存  2、共享数据

     2、指针是用来访问它指向存储空间中的数据的,但是指针变量里面存放的仅仅变量的首地址,如果没有数据类型,访问它所在指向存储空间的时候不知道取多少字节数据
     3、指针区分类型 是为了当通过指针访问对应的存储空间的时候,取相应字节的数据

指针与数组

    void test1(){
    //数组名不是一个指针
    int nums[] = {1,2,3,4,5};
    
    int *p = nums;
    //第一个不同点
    //   sizeof 计算变量所在存储空间的字节数
    int numsLength = sizeof(nums);
    printf("%d\n",numsLength);
    //指针变量占8个字节存储空间
    printf("%lu\n",sizeof(p));
    //sizeof(nums) != sizeof(p)
    //当一个数组赋值给一个指针变量,有些信息就丢失了,这个称为信息遗失,比如数组长度
    
    //第二个不同点
    // nums = &nums 数组名的地址就是数组的地址,所以可以使用指针代替数组类型作为函数参数
    printf("%p\n",nums);
    printf("%p\n",&nums);
    // p ! = &p  指针中存放地址与指针本身地址不同
    printf("%p\n",p);
    printf("%p\n",&p);
    //第三个不同点
    //数组名是不占用存储空间,当程序编译的时候所有出现数组名的地方都会被替换为数组的地址,所以不可以改变数组名的指向
    //指针变量的指向是可以改变的
    int num1s[] = {7,9};
    //    nums = num1s;
    p = num1s;
    printf("%d\n",p[1]);
    

}

指针运算

 void test(){
    //指针加法
    int nums[] = {1,2,3,4,5};
    
    int *p = 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值