《C和指针》

《C和指针》部分笔记

第一章 快速上手

1.从一个比较简单的程序开始讲解 “从标准输入读取文本并对其进行修改,然后把它写到标准输出”

里面遇到几个有意思的点

int ch;
//思考scanf的返回值
while( num < max && scanf( "%d", &columns[num] ) == 1 && columns[num] >= 0 ) 
    num += 1;
while( (ch = getchar()) != EOF && ch != '\n' )  //为何ch要声明为整型
    ;
  • scanf函数的返回值是函数成功转换并存储与参数中的值的个数。
  • getchar函数从标准输入读取一个字符并返回它的值。如果输入中不再存在任何字符,函数就会返回常量EOF,用于提示文件的结尾。
  • 为什么ch被声明为一个整型?答案是EOF是一个整型值,它的数位比字符类型(char)要多,把ch声明为整型可以防止从输入读取的字符意外地被解释为EOF。同时,也意味着接收字符的ch必须足够大,足以容纳EOF。
  • 补充:字符在本质上也是整型。
  • 函数的传值调用和传址调用在后面的章节会讲到,传数组名其实也是传值,因为数组名是一个指针,所以就变成传址了。

第二章 基本概念

1.环境:讲编译、链接、运行。编译环境、运行环境不同,需要交叉编译。

2.词法规则:词法规则就像英语中的拼写规则,决定你在源程序中如何形成单独的字符片段,也就是标记(token)。C的令牌(token):可以是关键字、标识符、常量、字符串值或者是一个符号。

第三章 数据

1.数据类型

graph LR
A[4种基本数据类型] --> B[整型]
A --> C[浮点型]
A --> D[指针]
A --> E[聚合类型]
B --> F[整型字面值]
B --> G[枚举类型 enum声明]
E --> H[数组 结构等]

整型家族:9个

char、signed char、unsigned char;

short int、unsigned short int;

int、unsigned short int;

long int、unsigned long int。

字符串常量的直接值是一个指针

2.typedef:定义新类型的名字(区别#define)

typedef char *ptr_to_char; //把标识符ptr_to_char声明为作为字符指针类型的新名字
ptr_to_char a; //声明a是一个指向字符的指针

3.常量 const关键字

int const *pt1;  //可以修改指针本身,但是不能修改指向的值
int * const pt2; //指向整型的常量指针,指针本身不能修改

4.作用域

文件作用域、函数作用域、代码块作用域、原型作用域

原型作用域只适用于在函数原型中声明的参数名,就是在函数声明的参数名。

5.链接属性

6.存储类型

一定要理解作用域、链接属性和存储类型这三者的特点!!

最近很忙,后续再添加吧!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分、基本概念 翻译环境与执行环境;交叉编译器;独立环境 编译、链接与执行 第二部分、各重要特性 2.1 数据...
    王侦阅读 3,663评论 0 0
  • strcpy: 复制字符串,char * strcpy(char _dst, char const _src);如...
    什么都值得阅读 3,184评论 0 0
  • 程序示例 预处理指令 以上5行都为预处理指令。因为它们是由预处理器解释的。预处理器读入源代码,根据预处理指令对其进...
    大海孤了岛阅读 3,180评论 0 0
  • 题目来源:1、中兴、华为、慧通、英华达、微软亚洲技术中心等中外企业面试题目;2、C 语言面试宝典(林锐《高质量编程...
    月震阅读 5,828评论 0 1
  • 版权声明:本文为 gfson 原创文章,转载请注明出处。注:作者水平有限,文中如有不恰当之处,请予以指正,万分感谢...
    gfson阅读 8,657评论 0 6