一、#define宏定义

  如下程序段,则输出结果为:

  #define MAX 12

  int main(){

    cout << "20\0MAX019" << endl;

  }

  输出结果:20 , 知识点:#define定义 的宏常量不替换程序中""里的东西

  https://www.cnblogs.com/bytebee/p/8205450.html

二、const常量指针与指针常量

  定义一个int常量

  const int a = 10;

  int const a = 10;

  这两种方法都是合法的,意义相同。当const用于指针呢?

  int * const p = &a; // 指针常量 p = NULL; 非法

  int const *p = &a; // 常量指针 *p = 20; 非法

  const int *p = &a; // 常量指针

  若想定义一个指针,既不能改变其值,也不能改变其指向的值,

  const int * const p = &a;

  下面这个语句看着有点怪怪的

  int const * const p = &a;

  其实它实现了和上一条定义相同的效果

三、printf()函数

  如下输出语句是否正确

  char *s = "parliament";

  printf(s); // ok, 输出 parliament

  printf(s+1); // ok, 输出arliament

  printf("c++"+1); // ok,输出++

  (对于输出结果不明白的参见第四条)

  初学c时,接触的用printf()输出字符串的方式就是printf("%s", 字符串);第一次看到上面的输出语句觉得是语法错误,直到前天(2019.11.18)看到87年一道键盘字母对应的题目题解后才返回来又看了一下,没想到是正确的。

  该题链接

  https://www.cnblogs.com/songlee/p/5738125.html

四、字符串常量

  在之前的文章里提到过字符串常量代表的其实是一个地址,是字符串首元素的地址,今天再把它细说一下

  比如字符串常量"string",看着是一个字符串,其实本质是一个const char*的地址,是一个地址常量

  "string"+1则代表将该地址移动 1*char个字节数,即移动到第二个元素't'的地址,此时输出结果为 "tring"

  "string"[1]呢?相当于*("string"+1),取第二个元素的值,即't'

  1["string"]呢?同上啦,和数组下标用法是相同的

  

  

  

   

最新文章

  1. eclipse查看class文件的源码
  2. 使用iScroll时,input等不能输入内容的解决方法
  3. winform 映射字段的写法:
  4. webViewDidFinishLoad因为网页里的重定向,会调用多次,使用web view.isLoading来解决
  5. 简单学C——第三天
  6. PHP把2个二维数组合并一个二维数组
  7. MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例
  8. 联想笔记本电脑 Z500除尘过程
  9. TP5 模型类和Db类的使用区别
  10. mvc4.0 @Styles.Render(转)
  11. Android APK安装过程学习笔记
  12. 讨论HTTP POST 提交数据的几种方式
  13. debian下arp欺骗
  14. IIS 设置文件传输大小限制
  15. javascript中cookie常用操作
  16. 模板引擎Dot
  17. 利用angular指令监听ng-repeat渲染完成后执行脚本
  18. Python程序,辅助微信跳一跳游戏介绍
  19. p3新式类__new__使用和实例化
  20. Case 降序升序排列

热门文章

  1. AirtestIde的安装(win10)
  2. Laravel $request 常用方法
  3. span标签
  4. CF359D Pair of Numbers gcd+暴力
  5. Oracle Linux 6.4 LVM中误删VG之恢复过程
  6. idea JRebel
  7. Node.js 文件操作
  8. Hibernate 关系配置
  9. Cesium官方教程6--相机
  10. Access the value of a member expression