C语言小细节(三)

  • 数组与指针
    • 指针:在进行指针的初始化时,主要有一下两种的区别:
      • 指向非数组变量时:一下两种写法效果相同

                                 //第一种

                               int a;

                               int *p = &a;     //在初始化时另p指向int a的

                               *p = 1;

 

                               //第二种

                               int a;

                               int *p;        //先定义一个指针p

                               p = &a;      //再另其指向a

                               *p = 1;

  • 在指向数组时:一下两种写法相同

                               int arr[6] = { 0 };

                               int *pa = arr;  //初始化指针pa指向数组arr[6]的第一个元素

 

                               int *pb;  //初始化指针pb

                               pb = arr;  //令其指向arr[6]的第一个元素

  • 但是不能写pa=&arr,因为&arr是一个指向数组的指针
  • 数组:一下两点值得注意
    • C语言中只有一维数组,元素可以为任意类型的对象,
    • 除了确定数组的大小和获得指向该数组下标为0的元素的指针,其他队数组的操作实际上都是通过指针进行的
  • 作为参数的数组
    • C语言会自动将作为参数的数组声明转换为相应的指针声明
  • 指针的赋值:将一个指针的值赋给另一个指针,其实是让两个指针指向了同一个内存区域
  • 空指针:int *p=NULL为常规写法
  • 边界计算:在C语言中的数组下标或者计数一般都从0开始,如果需要计数n次则计数到<=n结束
  • 求值顺序:C语言中&&、||、?:和,存在规定的求值顺序
    • &&只有在左侧值为1时进行右侧的求值,||只有在左侧值为0时进行右侧的求值
      • 因此1<0&&a++;该句运行后a的值其实并没发生改变
    • a?b:c只有在a计算出具体值后对b或c进行求值
    • ,则是先计算左侧,后将结果舍弃,计算右侧的值
  • 函数main的返回值:大多数C语言实现都是通过函数main的返回值来告知操作系统该函数的执行是否成功,典型的返回0为程序执行成功,返回非0为程序执行失败

本内容主要参考《C陷阱与缺陷》一书,内容为自己整理的笔记

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值