C语言中空(或void)指针的优点是什么
C语言中的 void 指针有以下优点:
使用 void 指针,可以创建一个可以接受任何数据类型参数的通用函数。 memcpy 和 memmove 库函数是泛型函数的最佳示例,使用这些函数可以将数据从源复制到目标。
例如:
void*memcpy(void* dst,constvoid* src, size_t num );C
void 指针可以转换为另一种数据类型,这就是 malloc、calloc 或 realloc 库函数返回 void * 的原因。 由于 void *这些函数用于为任何数据类型分配内存。
使用 void * 可以创建一个通用链表。
自动类型转换
数据类型存在自动转换的情况.
自动转换发生在不同数据类型运算时,在编译的时候自动完成。
char类型数据转换为int类型数据遵循ASCII码中的对应值.
注:
字节小的可以向字节大的自动转换,但字节大的不能向字节小的自动转换
char可以转换为int,int可以转换为double,char可以转换为double。但是不可以反向。
位操作
运算符:~ & | ^ >> << &= |= ^= >>= <<=. 二进制、十进制和十六进制记数法. 用于处理一个值中个别位的两个C工具:位运算和位字段.
什么是悬空指针?
通常,当引用对象被删除或释放时,会出现延迟指针,而不会更改指针的值。 它会产生问题,因为指针仍然指向不可用的内存。 当用户尝试取消引用悬空指针时,它会显示未定义的行为,并且可能是分段错误的原因。
强制类型转换
强制类型转换是通过定义类型转换运算来实现的。其一般形式为:
(数据类型) (表达式)
其作用是把表达式的运算结果强制转换成类型说明符所表示的类型
在使用强制转换时应注意以下问题:
数据类型和表达式都必须加括号, 如把(int)(x/2+y)写成(int)x/2+y则成了把x转换成int型之后再除2再与y相加了。
转换后不会改变原数据的类型及变量值,只在本次运算中临时性转换。
强制转换后的运算结果不遵循四舍五入原则。
C预处理器和C库
预处理指令:#define、#include、#ifdef、#else、#endif、#ifndef、#if、#elif、#line、#error、#pragma. 函数:sqrt()、atan()、atan2()、exit()、atexit()、assert()、memcpy()、memmove()、va_start()、va_arg()、va_copy()、va_end(). C预处理器的更多功能. 类函数宏和条件编译. 内联函数. C库概述和其中一些方便的函数,
自增与自减运算符
自增运算符为++,其功能是使变量的值自增1
自减运算符为--,其功能是使变量值自减1。
它们经常使用在循环中。
什么是野指针?
参考答案如下:
在首次使用之前未正确初始化的指针称为野指针。 未初始化的指针行为是完全未定义的,因为它可能指向某个可能导致程序崩溃的任意位置,这就是它被称为野指针的原因。
换句话说,编程语言中没有被编译器或程序员初始化的每个指针都以野指针开始。
注意:通常,编译器会警告通配指针。
语法:
int*piData;//piData is wild pointer
高级数据表示
用C表示多种数据类型. 新的算法,以及增强你概念上开发程序的能力. 抽象数据类型(Abstract data type, ADT). 函数:进一步学习 malloc().