指针学习-

指针基础

(1)p = (int *) 1732------p指向地址为1732的int变量

(2)指针声明符不是指针的组成部分,p是指针变量而不是*p

(3)不同类型的指针变量之间不能相互赋值

(4)指针初始化不能是数字,但可以是0,因为0是NULL

(5)数组的基地址:内存中存储数组的起始位置

(6)若定义int a[100];a=a+1是非法的,因为不能改变指针常量a的值

(7)起始地址代表了存放字符串常量首字符的存储单元的地址,被称为字符串常量的值 ,也就是说字符串常量实质上是一个指向该字符串首字母的指针常量

(8)字符数组占用一块连续的内存单元,字符指针只占用一个内存单元

(9)对于字符数组sa,若要改变字符串,只能改变数组元素的内容,如:strcpy(sa,"Hello");若要改变指针指向的字符串,可以直接改变指针的值,sp="Hello"

(10)gets有返回值:字符串第一个字符的地址

(11)puts也有返回值,若成功输出则返回'\n',否则返回EOF

(12)一级指针交换,二级指针也交换;数值交换,两级指针都交换;即,某一级交换,则更高级别的指针会交换。

(13)二维数组中,a+1是第一行的地址,属于二级指针;*(a+1)使第一行首元素的地址,属于一级指针;**(a+1)使第一行首元素的值

(14)a[i][j]等价于(*(a+i)+j),*(a[i]+j)

(15)语句 int *p[5]; 定义了一个指针数组p,用于指向一个有5个元素的数组(×)指向分别的五个元素

(16)如果函数的返回类型是指针,则不能返回函数内部任意变量的地址。

(17)用指针数组存储字符串:gets(str); 动态分配内存

poem[n] = (char *)malloc(sizeof(char) * (strlen(str) + 1))

(18)命令行的一般形式:命令行 后面接若干命令参数

(19)使用命令行的程序不能直接在编译器执行,要经过编译、链接变成exe文件,然后回到命令行状态

(20)int main(int argc,char *argv[])其中argc是命令和命令参数的个数,argv[0]指向命令,argv[1...argc-1]指向命令参数

(21)main中的形参允许用任意合法的标识符来命名

(22)返回指针的函数一般都返回主调函数或静态存储区中变量的地址,不能返回函数内部定义的自动变量的地址;特别的,如果函数是通过动态内存分配建立的内存单元,其地址可以正常返回。

(23)定义指向函数的指针:int(*fun)(int,int)函数指针为fun,指向类型为int且有两个整形参数的函数;调用:(*fun)(x,y)

(24)二维数组的元素地址表达式为首地址

(25)文件在操作系统中:"保存"把数据由内存写入文件,"打开"把文件读入到内存,记事本保存后数据才会被写入磁盘文件。

(26)数据文件可分为文本文件和二进制文件

(27)从文件党的逻辑结构上来看,c语言将文件看做数据流,并以一维方式存储,数据流分为字符流和二进制流

(28)根据文件缓冲的特性,将文件分为缓冲文件系统和非缓冲文件系统

(29)c语言源程序是文本文件,目标文件和可执行文件是二进制文件。

(30)在进行文件操作时,系统自动为每一个文件分配一块文件内存缓冲区(内存单元)。在进行非文件操作时,需要用C语言实现分配。

(31)文件缓冲区时内存用于数据存储的数据块,由系统自动分配;文件操作都是通过调用标准函数来完成的。

(32)文件指针指向文件类型结构

(33)fp++意味着指向下一个FILE结构

(34)fopen:若执行成功,返回包含文件缓冲区信息的file结构地址,赋值给\文件指针 file;否则返回一个NULL给file指针

(35)fclose返回0表示正常关闭文件,否则表示无法正常关闭文件

(36)文件关闭操作:强制把缓冲区的数据写入磁盘外,释放文件缓冲单元和file结构

(37)fputc(ch,fp)把字符ch写到fp指示的磁盘,若成功为ch,若失败则返回EOF

(38)feof检测文章有没有到末尾,到了末尾返回1

(39)文章结束符EOF是一个值为-1的常量

(40)fputs(s,fp)字符串若输出成功,返回最后一个字符,否则返回EOF

(41)缓冲文件系统的文件缓冲区位于内存数据区中

(42)fgets(数组名或字符指针s,个数n,文件指针fp)最多读取n-1个字符

(43)fscanf(文件指针,格式字符串,输入表)

fprintf(文件指针,输出字符串,输出表)

(44)#include <stdio.h>

printf("%d %d %d", NULL, '\0', EOF);

输出0 0 -1

(45)fread(buffer, size, count, fp)buffer是指针,表示存放输入数据的首地址;size表示数据块的字节数,count表示数

据块数,fp表示文件指针

(46)二进制文件的读写效率比文本文件高,因此不必把数据与字符串做转换

(47)fseek控制指针移动;rewind重定位文件首函数,ftell获取指针当前位置,feof判断是否结尾,ferror读写错误检查,clearer出错标记清除

(48)函数的定义不可以嵌套,但函数的调用可以嵌套

(49)宏替换不占用运行时间,只占用编译时间

(50)一行不能出现多个有效的预处理命令行

(51)使用带参数宏定义时,参数的类型应与宏定义时一致说法说无,因为宏定义只是文本替换,没有参数类型一说

(52)宏定义可以出现在函数的内部

(53)include寻找被包含文件先在源程序所在目录搜索,再按系统设定的标准方式搜索

(54)

cpp 复制代码
#define CIR(r) r*r
int a = 1, b = 2, t;
t = CIR(a+b);    
printf("%d\n",t);   
输出5 1+2*1+2------------------直接文本替换

(55)在定义嵌套的结构类型时,必须先定义成员的结构类型,再定义主结构类型。

相关推荐
ChinaRainbowSea9 分钟前
八. Spring Boot2 整合连接 Redis(超详细剖析)
java·数据库·spring boot·redis·后端·nosql
小咕聊编程33 分钟前
【含文档+PPT+源码】基于小程序的智能停车管理系统设计与开发
java·spring boot·小程序
某个默默无闻奋斗的人1 小时前
三傻排序的比较(选择,冒泡,插入)
java·数据结构·算法
荆楚闲人1 小时前
stm32小白成长为高手的学习步骤和方法
stm32·嵌入式硬件·学习
蝴蝶不愿意2 小时前
《苍穹外卖》项目学习记录-Day11订单统计
学习
黄雪超3 小时前
算法基础——一致性
大数据·算法·一致性
敲上瘾3 小时前
BFS(广度优先搜索)——搜索算法
数据结构·c++·算法·搜索引擎·宽度优先·图搜索算法
好好学Java吖3 小时前
【二分题目】
java·开发语言
Captain823Jack3 小时前
【leetcode练习·二叉树拓展】归并排序详解及应用
算法·leetcode·职场和发展
查理零世3 小时前
【算法】回溯算法专题② ——组合型回溯 + 剪枝 python
python·算法·剪枝