关于C语言的一些笔记

  • return;
    在void函数中会用到这种形式,这条语句会终止函数,并把控制返回给主调函数

  • 指针
    ptr = &bath;
    val = *ptr;
    上述两条语句等价于val = bath;

  • int days[] = {10, 20, 30, 40}
    index = sizeof days;
    sizeof以字节为单位计算数组大小

  • 指定初始化器:初始化指定的数组元素
    int arr[6] = {[5] = 212};
    如果指定初始化器后面有更多的值,这些值被用于指定元素后面的元素
    当再次初始化同一个指定元素时,最后初始化取代之前的初始化

  • days == &days[0]; //days为数组
    数组名是数组首元素的地址

  • 在C中,指针+1指的是增加一个存储单元

  • %zd可以打印sizeof的返回值,编译器不支持%zd时可以用%u或者%lu替换

  • 间接运算符的优先级比+、-、*、/高,但是与自增、自减运算符优先级相等

  • ar为数组
    ar[i] == *(ar + 1);

  • 指针与整数相加:用+运算把指针与整数相加,整数都会和指针所指向类型的大小相乘,然后把结果与初始地址相加

  • 递增指针:递增指向数组元素的指针可以让该指针移动至数组下一个元素,本身的地址不变,变量不会因为值发生变化而移动位置,递减同理

  • 指针减去一个整数:指针必须是第一个运算对象,整数是第二个运算对象,该整数乘以指针指向类型的大小,然后用初始地址减去乘积

  • 指针地址用%p打印,%td打印地址差值

  • 指针求差:C保证指向统一数组的两个指针相差运算有效

  • 指针比较:使用关系运算符可以比较两个指针的大小,前提是两个指针的类型必须相同

  • 对形参使用const可以保证数组的数据不被修改

  • 把const数据或非const数据的地址初始化为指向const指针或为其赋值是合法的,只能把非const数据的地址赋给指针
    不能用非const标识符修改const数据,C不能把const参数传递给非const标识符的函数
    const double *pc = rates; //不能指向别处
    double * const pc = rates; //不能赋值
    double * const *pc = rates; //不能赋值也不能指向别处

  • days是一个二维数组
    **days 与 *&days[0][0]等价
    days+2表示二维数组的第3个元素(一维数组)地址
    *(days+2)表示二维数组第3个元素的首元素的地址
    *(days+2)+1表示第3个元素的第二个元素地址
    *( *(days+2)+1)表示第3个元素的第二个元素的值

  • int (*pz)[z]; //pz指向一个内含两个int类型值的数组
    int *pz[z]; //([]的优先级较高),pz是一个内含2个指针元素的数组,每个元素都指向int的指针

  • 声明指向N维数组的指针时,只能省略最左边括号中的值

  • 变长数组不能改变大小,而是在创建数组时,可以使用变量

  • 复合字面量:(int [z]){10, 20} //int[z]是复合字面量的类型名
    由于复合字面量是匿名的,所以不能先创建再使用,必须在创建的同时使用
    int *pt;
    pt = (int [z]{10, 20})

  • int islower(int c); 包含在ctype.h文件中 ,用来判断一个字符是否是小写字母

  • mallo()函数: 头文件stdlib.h,用于分配动态内存,如果分配成功:则返回指向被分配内存空间的指针

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值