指针学习-

server/2025/1/2 0:47:11/

指针基础

(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)

#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)在定义嵌套的结构类型时,必须先定义成员的结构类型,再定义主结构类型。


http://www.ppmy.cn/server/154375.html

相关文章

【Rust自学】7.4. use关键字 Pt.2 :重导入与换国内镜像源教程

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 7.4.1. 使用pub use重新导入名称 使用use将路径导入作用域内后。该名称在词作用域内是私有的。 以上一篇文章的代码为例&#xff1a; m…

嵌入式学习-QT-Day08

嵌入式学习-QT-Day08 八、数据库 1、准备工作 2、连接数据库 3、创建表 4、增删改 5、查询 5.1 全查 5.2 模糊查询 八、数据库 1、准备工作 Qt本身并没有数据库的功能&#xff0c;但是Qt支持调用其他主流的数据库产品&#xff0c;并且这些数据库产品指定了统一的Qt接口&#xf…

uniapp下拉选择组件

目录 背景 实现思路 代码实现 配置项 使用 尾巴 背景 最近遇到一个这样的需求&#xff0c;在输入框中输入关键字&#xff0c;通过接口查询到结果之后&#xff0c;以下拉框列表形式展现供用户选择。查询了下uni-app官网和项目中使用的uv-ui库&#xff0c;没找到符合条件的…

如何设置Edge浏览器访问软件

使用Edge浏览器访问分销ERP A\V系列软件时会出现各种报错&#xff0c;如何设置Edge浏览器使其正常访问&#xff0c;请看下面的具体操作。 一、打开Edge浏览器&#xff0c;点击右上角的 设置及其他&#xff0c;如图&#xff1a; 二、在弹出界面中&#xff0c;点击 扩展&#xff…

腾讯音乐:说说Redis脑裂问题?

Redis 脑裂问题是指&#xff0c;在 Redis 哨兵模式或集群模式中&#xff0c;由于网络原因&#xff0c;导致主节点&#xff08;Master&#xff09;与哨兵&#xff08;Sentinel&#xff09;和从节点&#xff08;Slave&#xff09;的通讯中断&#xff0c;此时哨兵就会误以为主节点…

【ETCD】【实操篇(十二)】分布式系统中的“王者之争”:基于ETCD的Leader选举实战

分布式系统中&#xff0c;Leader选举是一个非常重要的概念。Leader选举确保系统中的某个节点&#xff08;Leader&#xff09;负责执行关键任务&#xff0c;而其他节点作为备份&#xff0c;等待Leader的失效或者任务完成后重新选举出新的Leader。通过Leader选举机制&#xff0c;…

常用 Docker 命令介绍

常用 Docker 命令介绍 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何支持 Docker 的平台上。为了有效使用 Docker&#xff0c;掌握一些常用的 Docker 命令是必不可少的。以下是 Docker 的…

ThinkPHP接入PayPal支付

ThinkPHP 5接入PayPal 支付&#xff0c;PayPal的流程是服务器请求Paypal的接口下单&#xff08;需要传订单id/支付成功的重定向地址/支付失败的重定向地址&#xff09;&#xff0c;接会返回一个支付地址&#xff0c;项目服务器把地址返给用户&#xff0c;用户打开链接登录Paypa…