相关疑难解决方法(0)

函数声明与原型的替代(K&R)C语法

这个C语法有什么用- 使用'K&R'样式函数声明?

int func (p, p2)
    void* p;
    int  p2;
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我能够在Visual Studios 2010beta中写这个

// yes, the arguments are flipped
void f()
{
    void* v = 0;
    func(5, v);
}
Run Code Online (Sandbox Code Playgroud)

我不明白.这种语法有什么意义?我可以写:

int func (p, p2)
    int  p2;
{
    return 0;
}
// and write
int func (p, p2)
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它似乎唯一指定的是它使用了多少参数和返回类型.我猜没有类型的参数有点酷,但为什么允许它和int paranName函数声明后?有点奇怪.

这还是标准的C吗?

c function kernighan-and-ritchie function-declaration function-definition

69
推荐指数
3
解决办法
1万
查看次数

C并定义一个没有参数的函数原型

这个问题是`f(void)`的一个分支,意味着C++ 11或C中没有参数?

有几个人回答了这个问题,并认为在C中,函数原型的意义

void func ()
Run Code Online (Sandbox Code Playgroud)

是func是一个函数返回什么(void),其参数目前是未知的.

此外,他们认为可以制作此声明,然后使用一些参数调用该函数,例如:

func (1, 2, 3);
Run Code Online (Sandbox Code Playgroud)

所以,我做了这个,我做了一个测试,以验证这是否有效,我并不感到惊讶.

这是func.c,其中包含 main()

#include <stdio.h>

extern void func ();

int main (int ac, char ** av)
{
  func (1, 2, 3);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这里是包含该函数的func1.c func()

#include <stdio.h>

void func (int a, int b, int c)
{
  printf ( "%d, %d, %d\n", a, b, c );
}
Run Code Online (Sandbox Code Playgroud)

这是我的问题

问题1:

当我运行这个程序时,我得到了预期的输出1,2,3.这是一种安全的编写代码的方法; 即可以假设ABI将可靠地确保func()in 的调用main()将三个参数放在正确的位置(寄存器,堆栈,等等)func()以找到它们?

问题2:

如果上面1的答案是安全的话,那么如果用func()C以外的某种语言实现你的答案会改变吗?

c c++

4
推荐指数
1
解决办法
2806
查看次数

如何从头开始重复 ac 程序并清理屏幕和第一个输入值?

我是编程新手。我写了一个简单的程序。我想一次又一次地重复该程序,并且只有当用户想要退出时它才能退出。这是我的程序

#include<stdio.h>
#include<conio.h>
main()
{
    char ch;
    int num1, num2, a, m, s, choice;
    float d;
    printf("\nEnter The First Number: ");
    scanf("%d", &num1);
    printf("\nEnter The Second Number: ");
    scanf("%d", &num2);
    a=num1+num2;
    m=num1*num2;
    s=num1-num2;
    d=(float)(num1/num2);
    printf("\nEnter Your Choice \nFor Addition Type A \nFor Multipication Type M \nFor Division Type D \nFor Substraction Type S : ");
    scanf(" %c", &ch);
    switch(ch)
        {
            case 'A': printf("\nThe Addition Of The Number Is= %d", a);
                break;
            case 'M': printf("\nThe Multipication Of The Numbers Is= %d", …
Run Code Online (Sandbox Code Playgroud)

c loops console-application

3
推荐指数
1
解决办法
4万
查看次数