C语言函数参数为空和void

C语言中函数参数的为空和用void标注他们的效果一样吗?

#include <stdio.h>
  2 //int add();
  3 int add(void);
  4 int main(void)
  5 {
  6     int i;
  7     i = add(5 ,6);
  8
  9     printf("%d\n", i);
 10     return 0;
 11 }
 12 int add(a ,b)
 13 {
 14     return a + b ;
 15 }

C语言中函数声明对函数的检测最主要的标准是函数名,C语言中函数参数列表中的参数名可以缺省

C语言当中参数列表中的数据类型也可以缺省,默认是int。

add()并不等价于add(void);  add(void)明确指明add函数不接收任何参数,若对其传参会报错,提示是error;

而add()表示接收参数,他的类型是int,只是他是一种没有意义的接收,并不会用这个参数,提示是wring;

时间: 2024-11-08 21:58:51

C语言函数参数为空和void的相关文章

Swift 1.1语言函数参数的特殊情况本地参数名外部参数名

Swift 1.1语言函数参数的特殊情况本地参数名外部参数名 7.4  函数参数的特殊情况 声明定义有参函数时,为函数的每一个参数都定义了参数名称.根据参数名定义的形式不同,函数参数包括本地参数和外部参数名两种本文选自swift入门很简单. 7.4.1  本地参数名 本地参数名就是定义函数名时,在参数列表中所写的参数名,它只可以在函数主体内使用.如以下的一个代码片段,它定义了一个函数名为fun的函数,在此函数的参数列表中定义的就是本地参数名文选自swift入门很简单. func fun(star

C语言函数参数压栈顺序为何是从右到左?(从左向右的话,碰到printf的会陷入死循环)

上学期学习了汇编语言,并在操作系统实验中使用了汇编+C语言混合编程,中间也了解了一些C语言与汇编语言的对应关系. 由于汇编语言是底层的编程语言,各种函数参数都要直接控制栈进行存取,在混合编程中,要用汇编来调用C函数,当然就要知道参数的压栈情况了. 当知道C函数的参数压栈顺序是从右到左时,我觉得很奇怪,因为大多数情况下,人们的习惯是从左到右的,难不成设计者学咱们中国古代写字从右到左的习惯不成? 当时只是记下了这个规则而已,并没有去探究这其中的缘由,后来在实验中自己用汇编实现了printf和scan

C语言函数参数传递方式

C语言中函数的参数传递方式有两种:传值.传地址. 1.传值调用 在被调用函数中开辟出一个临时的内存空间,在主调用函数进入被调用函数前,会将实参进行拷贝,拷贝的数据放在该临时内存空间中,供被调用函数使用.当被调用函数返回时,该临时内存空间即被释放. 1 #include<stdio.h> 2 3 int test_func(char *q) 4 { 5 long lAddr=&q; // 被调用时,光标选中“&q”,显示结果(随机)为:0x002df7ac {0x013058b8

C 语言函数参数只能传指针,不能传数组

今天被要求编写一个C/C++冒泡算法的程序,心想这还不是手到擒来的事儿,虽然最近都是用Javascript程序,很少写C/C++程序,但是好歹也用过那么多年的C语言: 首先想的是怎么让自己的代码看上去更高大上一点,怎么着也得能自动识别数组的长度吧:于是第一版程序如下,结果如下 看到结果,很是惊讶,为什么是2呢?看到后面我列出可执行文件的类型,应该知道,这个长度是指针的长度,64bit,刚好两个字节.说明sortof求得是指针的长度,而非数组的长度. 仔细想想,函数的参数只能传递指针,不能直接传递

C语言函数参数既做出参又做入参的代表

//使用fcntl对文件进行加锁 #include "stdio.h"#include "unistd.h"#include "fcntl.h" int main(){    int fd;    struct flock lk;    int r;    fd=open("a.txt", O_RDWR);    if (fd==-1)    {        fd=open("a.txt", O_RDWR

C语言中函数参数为什么是由右往左入栈的?

先通过一个小程序来看一看: #include void foo(int x, int y, int z) { printf("x = %d at [%X]n", x, &x); printf("y = %d at [%X]n", y, &y); printf("z = %d at [%X]n", z, &z); } int main(int argc, char *argv[]) { foo(100, 200, 300);

C语言中函数参数入栈的顺序 - Fangzhen - 博客园

.wiz-todo, .wiz-todo-img {width: 16px; height: 16px; cursor: default; padding: 0 10px 0 2px; vertical-align: -10%;-webkit-user-select: none;} .wiz-todo-label { display: inline-block; padding-top: 7px; padding-bottom: 6px; line-height: 1.5;} .wiz-todo

(转)如何编写有多个返回值的C语言函数

1引言    笔者从事C语言教学多年,在教学中学生们常常会问到如何编写具有多个返回值的C语言函数.编写有多个返回值的函数是所有C语言教材里均没有提到的知识点,但在实际教学与应用的过程中我们都有可能会遇到这样的问题.有学生也尝试了不少方法:如把多个需要返回的值作相应的处理后变成一个可以用return语句返回的数据,再在主调函数中拆开返回的数据使之变成几个值:或者把需要返回多个值的一个函数分开几个函数去实现多个值的返回.这些方法虽然最终都能实现返回要求的多个值,但从程序算法的合理性与最优化方面去考虑

&lt;16&gt;【理解】数组元素作为函数参数+【掌握】数组名作为函数参数+【掌握】数组名作为函数参数的注意点

#include <stdio.h> int sum(int x,int y){ return x+y; } void printNum(int x){ //判断x的值 if (x>0) { printf("%d\t",x); }else{ printf("0\t"); } } int main(int argc, const char * argv[]) { int a[5]={1,-2,-3,-4,5}; //需求:要求计算数组的第一个元素和最