void函数return的作用(void函数)

  • 发布时间:2024-02-04 22:31:34 来源:
标签:
导读 你们好,最近小未来发现有诸多的小伙伴们对于void函数return的作用,void函数这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看

你们好,最近小未来发现有诸多的小伙伴们对于void函数return的作用,void函数这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。

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

2、3、堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式类似于链表。

3、使用一般规律分析3个符号:([] 的优先级高于 *)

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

5、int (*p)[5]: p是一个指针,指向一个数组,数组有5个元素都是int类型,所以 (*p)[5]是一个数组指针;

6、int *(p[5]): 是一个指针数组,结合方式同第一个一样;

7、字面意思来理解指针数组与数组指针

8、(1)指针数组的实质是一个数组,这个数组中存储的内容全部是指针变量。

9、(2)数组指针的实质是一个指针,这个指针指向的是一个数组。

10、因此,为了避免混乱,我们在编写C/C++程序时,对于任何函数都必须一个不漏地指定其类型。如果函数没有返回值,一定要声明为void类型。这既是程序良好可读性的需要,也是编程规范性的要求。另外,加上void类型声明后,也可以发挥代码的“自注释”作用。代码的“自注释”即代码能自己注释自己。

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

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

13、  int function(void)

14、  {

15、  return 1;

16、  }

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

18、  function(2);

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

20、结构体指针

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

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

23、在ANSI C标准中,不允许对void指针进行一些算术运算如p++或p+=1等,因为既然void是无类型,那么每次算术运算我们就不知道该操作几个字节,例如char型操作sizeof(char)字节,而int则要操作sizeof(int)字节。而在GNU中则允许,因为在缺省情况下,GNU 认为void *和char *一样,既然是确定的,当然可以进行一些算术操作,在这里sizeof(*p)==sizeof(char)

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

25、1.函数指针

26、函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。函数指针有两个用途:调用函数和做函数的参数。

27、函数指针数组

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

29、void*的实际应用

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

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

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

以上就是void函数这篇文章的一些介绍,希望对大家有所帮助。

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