当前位置:网站首页>【C补充】指针相关知识点收集01
【C补充】指针相关知识点收集01
2022-08-04 09:14:00 【一苇以航fp】
int *p[10]、int (*p)[10]、int *p(int) 和 int (*p)(int)的区别:
- int *p[10] —— p[10]为指针数组,数组中的每一个元素均为指向 int 型数据的指针;
- int (*p)[10] —— 定义了一个数组指针 p ,p 只能指向含有10个int型数据的数组;
- int *p(int) —— 声明了一个函数,函数名为 p,参数为 int ,返回类型为 int*
- int (*p)(int) —— 定义了一个函数指针 p,p只能指向参数为 int 型单变量,返回类型为 int 的函数。
NULL宏
NULL宏实际就是0,在要求指针的地方使用0时,编译器会视为空指针,而不是整数0,提供NULL宏是为了避免混淆。
p = 0 既可能是给变量赋值整数0,也可能是指针变量赋值为空指针
p = NULL必定是赋值空指针NULL的定义为
#define NULL (void*)0
此种定义方式可帮助编译器检查空指针是否正确使用,例如 int i = NULL,若不在NULL定义中进行强制类型转换,此赋值就是合法的。进行强制类型转换后就会因为类型不匹配为出现语法错误。依据编译器的不同,空指针不一定是全0的地址。
NULL不能被视为空字符,只能视为空指针。
提示"NULL pointer assignment"错误:
意为程序使用坏指针(不一定为空指针)把数据存储到内存中去了。
可能的原因为:scanf没有使用取地址符,或通过通过指针给变量赋值时,该指针没有初始化或为空指针。
//NULL pointer assignment
int i;
scanf("%d", i); //未取i的地址 &i
int* p;
*p = 2; //p没有初始化,为野指针
- 对mlloc或其他内存分配函数的返回值没有必要进行强制类型转换,因为这些函数返回值都是 void* 类型的,会在赋值操作时自动转换为任意指针类型。
- 创建两个含有互相指向对方成员的成员的结构:
struct s2; //创建不完整的结构类型
struct s1{
...
struct s2 *p;
};
struct s2{
...
struct s1 *q;
};
- 在调用malloc函数为单个对象分配内存时,为保证分配大小不出错,可使用如下方法:
struct node* p;
p = malloc(sizeof(*p)); //等价于p = malloc(sizeof(struct node));
虽然做 sizeof(*p) 运算的时候,p 并未初始化,但sizeof 操作符只计算其大小,不对其求值,因此即便 p 未初始化或包含空指针,此用法也符合规则。
边栏推荐
- .NET深入解析LINQ框架(五:IQueryable、IQueryProvider接口详解)
- 蘑菇书EasyRL学习笔记
- async - await
- 反序列化漏洞
- OAK-FFC-4P全网首次测试
- 有坦荡的远方
- Four common methods of network attacks and their protection
- 关于Oracle RAC 11g重建磁盘组的问题
- Detailed Explanation of Addresses Delivered by DHCP on Routing/Layer 3 Switches [Huawei eNSP]
- 菲沃泰科创板上市:市值123亿 宗坚赵静艳夫妇身价76亿
猜你喜欢

94后字节P7晒出工资单:狠补了这个,真不错...

交换机链路聚合详解【华为eNSP】

DOM简述

路由/三层交换机DHCP下发地址详解【华为eNSP】

下午14:00面试,14:08低着头出来了 ,问的实在是太...

ISO14443A读卡流程(作为示例参考)
![Detailed explanation of switch link aggregation [Huawei eNSP]](/img/c2/f9797fe8b17a418466b60cc3dc50a1.png)
Detailed explanation of switch link aggregation [Huawei eNSP]

NAT/NAPT地址转换(内外网通信)技术详解【华为eNSP】
![[Cloud Residency Co-Creation] HCSD Celebrity Live Streaming – Employment Guide](/img/50/86f0edaab8317e22c9ffdb2a2c6e93.png)
[Cloud Residency Co-Creation] HCSD Celebrity Live Streaming – Employment Guide

JSP基本语法
随机推荐
leetcode每天5题-Day06
oracle sql 多表查询
字符串相关题目
将jpg图片转换成yuv420(NV12)数据文件
MindSpore:Ascend运行出现问题
关于Oracle RAC 11g重建磁盘组的问题
Shell编程的条件语句
ansible部署脚本--亲测可用无坑
[Punctuality Atomic STM32 Serial] Chapter 1 Learning Method of the Book Excerpted from [Punctuality Atomic] MiniPro STM32H750 Development Guide_V1.1
leetcode单调栈经典例题——最大矩形
NAT/NAPT地址转换(内外网通信)技术详解【华为eNSP】
Grafana9.0发布,Prometheus和Loki查询生成器、全新导航、热图面板等新功能!
I am 37 this year, and I was rushed by a big factory to...
【正点原子STM32连载】第四章 STM32初体验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
[Punctuality Atom STM32 Serial] Chapter 2 STM32 Introduction Excerpted from [Punctual Atom] MiniPro STM32H750 Development Guide_V1.1
今年37了,被大厂抢着要...
MindSpore:model.train中的dataset_sink_mode该如何理解?
有坦荡的远方
It is found that several WRH tables are locked, what should I do?
MindSpore:图算融合报错