艾特商业网

c语言void是啥(c语言void是什么意思)

更新时间:2023-09-03 17:21:41

导读 你们好,最近小艾特发现有诸多的小伙伴们对于c语言void是啥,c语言void是什么意思这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往

你们好,最近小艾特发现有诸多的小伙伴们对于c语言void是啥,c语言void是什么意思这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。

1、 C/C编译的程序所占用的内存分为以下几部分:

2、 1.堆栈区:编译器自动分配释放并存储函数的参数值和局部变量的值。它像数据结构中的堆栈一样工作。

3、 2.静态区域:全局变量和静态变量存储在一起,初始化的全局变量和静态变量在一个区域,未初始化的全局变量和未初始化的静态变量在另一个相邻区域。程序结束后由系统释放。

4、 3.堆:一般由程序员分配和释放。如果程序员不释放它,它可能会在程序结束时被OS回收。注意在数据结构上和堆不同,分配方式和链表类似。

5、 4.文本常量区域:这是放置常量字符串的地方。程序结束后由系统释放。

6、 5.程序代码区:存储函数体的二进制代码。

7、 使用一般规则分析三个符号:([]优先于*)

8、 Int *p[5]: p是一个数组,数组中的五个元素都是指针,指针指向Int类型,所以*p[5]是一个指针的数组;

9、 Int (*p)[5]: p是一个数组的指针,数组有五个Int类型的元素,所以(*p)[5]是一个数组指针;

10、 Int *(p[5]):是一个指针数组,组合方式和第一个一样;

11、 字面理解指针数组和数组指针

12、 (1)指针数组的本质是一个数组,这个数组存储的所有内容都是指针变量。

13、 (2)数组指针的本质是指针,指向一个数组。

14、 因此,为了避免混淆,我们在编写C/C程序时,必须逐个指定任何函数的类型。如果函数不返回值,则必须声明为void类型。这不仅是程序可读性好的需要,也是编程规范化的要求。此外,

15、 加上void类型声明后,也可以发挥代码的“自注释”作用。代码的“自注释”即代码能自己注释自己。

16、 如果函数无参数,那么应声明其参数为void

17、 在C++语言中声明一个这样的函数:

18、 int function(void)

19、 {

20、 return 1;

21、 }

22、 则进行下面的调用是不合法的:

23、 function(2);

24、 因为在C++中,函数参数为void的意思是这个函数不接受任何参数。

25、 结构体指针

26、 即指向结构体变量的指针,一个结构体变量的起始地址就是这个结构体变量的指针。

27、 如果把一个结构体变量的起始地址存放在一个指针变量中,那么,这个指针变量就指向该结构体变量。

28、 在ANSI C标准中,不允许对void指针进行一些算术运算如p++或p+=1等,因为既然void是无类型,那么每次算术运算我们就不知道该操作几个字节,例如char型操作sizeof(char)字节,

29、 而int则要操作sizeof(int)字节。而在GNU中则允许,因为在缺省情况下,GNU 认为void *和char *一样,既然是确定的,当然可以进行一些算术操作,

30、 在这里sizeof(*p)==sizeof(char)

31、 在C语言中,指针不单单可以指向一个变量,其他更有高级的用途,下面来总结一下指针的高级用法:

32、 1.函数指针

33、 函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。

34、 函数指针有两个用途:调用函数和做函数的参数。

35、 函数指针数组

36、 函数指针数组是由函数指针构成的数组,在编程的过程中,就类似普通数组是一连串类型相同的变量集合, 函数指针数组就是指向一连串返回值相同, 参数类型相同的函数集合

37、 void*的实际应用

38、 void*有一个特性,任何数据类型的指针可以无错误的转换为void*类型,但是void*类型无法转换为其它类型指针,而且仅限指针之间转换

39、 void指针的使用一般多用于函数中,特别是函数指针大多都定义为void*;

40、 类似于void * memcpy(_Out_writes_bytes_all_(_Size) void * _Dst, _In_reads_bytes_(_Size) const void * _Src, _In_ size_t _Size);

以上就是c语言void是什么意思这篇文章的一些介绍,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!