C语言-(void*)类型指针
C语言 类型 指针 void
2023-09-27 14:22:01 时间
(void*)类型指针:ANSI新增的:即定义了一个指针,但不指定指向任何类型(即指向抽象的数据类型)。void
是空类型,只保存了指针的值,而丢失了类型信息
1 通过强制类型转换可将其值赋给另一指针变量
2.1用于动态存储函数的返回型指针 void malloc/calloc()
2.2也可用于函数 void*fun() //表示返回值是一个地址,指向空(抽象)数据类型
空指针NULL:不指向任何对象,不同于未初始化的野指针。
#ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif
数组与指针:数组所占存储空间的内存:sizeof(数组名)
数组的大小: sizeof(数组名)/sizeof(数据类型)
const 和 指针
- 指向常量的指针,值不能改变,指向可改变
- 常指针值能改变,指向不可改变
- 指向常量的常指针,都不能改变
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <stdio.h> int main() { // 1 指向常量的指针:指向可变,值不能变可改变指针 const int a = 10; int e = 20; int *p = &a; p=&e; //可指向其它对象 //*p = 1000;//但指向&a后其值*a就不能变化 printf("*p = %d\n", *p); // 2 可改变指针 const b = 10; int *pb = &b; pb = p; printf("*pb = %d\n", *pb); // 3常指针 const c = 10; int * const pc = &c;//常指针指向一个对象后指向不能变 *pc = 1000; //但值可变(指向对象的值) //pc = pb;不能改变 //4指向常量的常指针 const d = 10; const * int const pd = &d; //*pd = 1000;都 不能改变 printf("\n"); return 0; }
深拷贝与浅拷贝:
浅拷贝即通过指针赋值的方法实现指向,但如果浅拷贝后要删除就会使另外对象中的指针就会无效,形成所谓的野指针,而访问无效指针是危险的。
相关文章
- 计算机等级考试二级C语言上机题集(第91~95套)
- C语言中ASCII码大小写字母转换
- 程序员之---C语言细节24(段错误、类型提升、sizeof 'A')
- 【MATLAB教程案例91】将MATLAB程序转化为C语言
- 11 C++ - “新增”bool类型关键字(比较C语言)
- 10 C++ - struct类型加强(比较C语言)
- 08 C++ - 所有的变量和函数都必须有类型(比较C语言)
- C语言中的全局变量定义与使用
- C语言-指针
- 在C语言中,double、long、unsigned、int、char类型数据所占字节数
- 《C语言编程初学者指南》一2.3 初始化变量和赋值运算符
- 《21天学通C语言(第7版)》一6.3 嵌套循环
- 《21天学通C语言(第7版)》一导读
- 基于C语言实现的通用寄存器实验【100010689】
- 排序算法之选择排序【C语言】
- 求两个整数矩阵的乘积【C语言】
- 《C语言编程魔法书:基于C11标准》——第2章 学习C语言的预备知识 2.1 计算机体系结构简介
- C/C++ | C语言字符数组初始化,有些赋值方式千万注意
- C语言提高篇(wchar_t)字符类型
- C语言之数学运算练习题
- 【C语言】构造数据类型(自定义数据类型)相关知识点
- 自定义类型详解————C语言
- 1027 打印沙漏 (20 分)C语言
- C语言指针类型及意义
- C语言变长数组、字符串结束符、数组在内存中的存放、数组名及类型