zoukankan      html  css  js  c++  java
  • 《The C Programming Language》学习笔记

    第五章:指针和数组

    1. 单目运算符的优先级均为2,且结合方向为自右向左。
    *ip++;  // 将指针ip的值加1,然后获取指针ip所指向的数据的值
    (*ip)++;  // 将指针ip所指向的数据的值加1
    
    1. 当计算a[i]时,C编译器会立即将其转换为*(a+i)。也就是说,C语言中数组下标表达式和指针加偏移是等价的。

    2. 数组名和指针的一个区别:指针是变量,可以进行赋值和加减运算;数组名不是变量,不能进行赋值和加减运算。

    3. p[-1], p[-2]在语法上是合法的,只要保证元素存在,后向索引数组也是可以的。

    4. 指向同一个数组(包括数组最后一个元素的下一个元素)的两个指针可以进行大小比较,而对没有指向同一个数组的两个指针进行大小比较的行为是undefined的。

    5. 指针的合法操作:同类指针赋值、指针加减某个整数、指向同一数组的两个指针相减或比较大小、将指针赋值为0或与0比较;指针的非法操作:两个指针相加、相乘、相除,以及指针与浮点数相加减等。

    6. char *pmsg = "now is the time";是将一个指向字符数组的指针赋值给pmsg,而不是字符串拷贝。C语言不提供任何对整个字符串作为一个单元进行处理的操作符。

    7. 注意通过字符串指针修改字符串内容的行为是undefined的:

    char amsg[] = "now is the time";  // an array
    char *pmsg = "now is the time";   // a pointer
    
  • 相关阅读:
    使用图形界面调试arm程序: insight + gdb
    skyeye相关命令简介
    /bin/sh: can
    安装skyeye1.3.3 过程中可能遇到的问题
    linux下ARM汇编程序的调试
    ARM标准汇编与GNU汇编
    从ARMASM汇编到GNU ARM ASM汇编
    How much faster is assembly language?
    A number of problems from coded in ARM assembly language Problems
    An exploration of ARM assembly language
  • 原文地址:https://www.cnblogs.com/wuhualong/p/read_the_c_programming_language.html
Copyright © 2011-2022 走看看