c语言中void *和NULL

1.  int *str = NULL;
 #define NULL    ((void *)0)
空指针实质上是有指向的指针,但它指向的地址是很小的地址,约定俗成为地址0.

2. void *
void * 类型指针,这个类型指针指向了实实在在的存放数据的地址,但是该地址存放的数据的数据类型我们暂时不知道.

3. const void *a
这是定义了一个指针a,a可以指向任意类型的值,但它指向的值必须是常量.在这种情况下,我们不能修改被指向的对象,
但可以使指针指向其他对象.

原文地址:https://www.cnblogs.com/chenweilin/p/10281481.html

时间: 2024-07-29 14:16:37

c语言中void *和NULL的相关文章

C语言中void*详解及应用

void在英文中作为名词的解释为"空虚:空间:空隙":而在C语言中,void为"无类型",相应的void *为"无类型指针".void似乎只有"注释"和限制程序的作用,当然,这里的"注释"不是为我们人提供注释,而是为编译器提供一种所谓的注释. 本文地址:http://www.cnblogs.com/archimedes/p/c-void-point.html,转载请注明源地址. void的作用: 1.对函数

c语言中 int *p = NULL 和 *p = NULL 有什么区别

c语言中 int *p = NULL 和 *p = NULL 有什么区别 1. int *p = NULL; 代表定义一个指向整型变量的指针p,然后p的值设为NULL,也就是设为0:用另一种方式说,就是对一个刚定义的指向整型变量的指针,赋初始值,让其指向0地址. 2. *p = NULL; 代表对一个由指针p指向的变量(什么类型,不知道),赋值为0,是将那个变量赋值为0. 我们可以先看下面的代码: 1 int *p = NULL; 这时候我们可以通过编译器查看p的值为0x00000000. 这句

C语言中void *指针与空指针区别

void* 这不叫空指针,这叫无确切类型指针.这个指针指向一块内存,却没有告诉程序该用何种方式来解释这片内存.所以这种类型的指针不能直接进行取内容的操作.必须先转成别的类型的指针才可以把内容解释出来. 还有'\0',这也不是空指针所指的内容. '\0'是表示一个字符串的结尾而已,并不是NULL的意思. 真正的空指针是说,这个指针没有指向一块有意义的内存,比如说:char* k;这里这个k就叫空指针.我们并未让它指向任意地点.又或者char* k = NULL;这里这个k也叫空指针,因为它指向NU

C/C++语言中NULL、'\0’和0的区别

注:本文参考了http://blog.csdn.net/mylinx/article/details/6873253及书籍<征服C指针>([日]前桥和弥著). NULL.'\0'和0的值是一样的,都是0,不过它们的表现形式不一样: 1. NULL: 即空指针,不过在C和C++中并不一样.在VS 2013的库文件string.h中可以看到如果定义. 1 /* Define NULL pointer value */ 2 #ifndef NULL 3 #ifdef __cplusplus 4 #d

c语言中的void和void*

void void最常见的用法,就是在函数中限定函数的参数和返回值的 void draw(void); 表明函数draw没有参数也没有返回值,void在别的的地方的应用我也没见过: 实际上,如果把void 和int,char,double等类型放到一起理解的话,首先还是那句揭示本质的话:变量类型就是固定大小内存块的别名,那么void占用多大内存呢,编译器并没有定义void占用多大内存,所以对于void var; 这样的定义,编译器自然是不允许的,在vs中的错误提示是:不允许使用不完整的类型. v

C语言中malloc()和free()函数的具体作用

本文想就C语言中malloc()和free()函数的具体作用做出一些说明,这些细节大家在使用过程中很有可能会忽略. 在C语言中要动态的释放内存,就必然要用到指针,将动态分配获得的空间地址赋值给指针.C语言中动态分配内存的函数为malloc(), 在用完后,要及时调用free()函数释放.理论上,这样是安全的,但其实这样是不安全的,因为free()函数仅仅是告诉操作系统,这块空间我不用了,操作系统收回空间.而指向这块空间的指针并没有改变,它的值仍然指向这块空间.这样,我就可以继续使用该指针操作内存

C语言中strcpy与memcpy函数实现与区别

C语言中strcpy与memcpy函数是怎么实现的又有哪些区别呢?下面就与我来简单的介绍下吧,希望大家多给点意见,欢迎评论纠正错误. 6.2 字符串与数组 字符串一般是用字符数组的方式存储,例如下面的str定义: char str[] = "123456"; 这里str是一个字符数组,它存放了一个字符串"123456",由于字符串还有一个结束符"\0",所以此数组的长度为7而不是6. 6.2.1 strcpy函数与memcpy函数 strcpy和

C语言中malloc()和free()函数解析

1.malloc()和free()的基本介绍 (1)函数原型及说明 void *malloc(long NumBytes) 该函数分配了NumBytes个字节,并返回了指向这块内存的指针.如果分配失败,则返回一个空指针(NULL). void free(void *FirstByte) 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由. (2)函数基本用法 1 char *Ptr = NULL; 2 Ptr = (char *)malloc(1

浅析C语言中assert的用法(转)

原文地址:http://www.jb51.net/article/39685.htm 以下是对C语言中assert的使用方法进行了介绍,需要的朋友可以参考下. assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include <assert.h>void assert( int expression );assert的作用是先计算表达式expression,如果其值为假(即为0),那么它先向标准错误流stderr打印一条出错