标签: function-declaration

Python - Function有一个列表作为参数.如何返回另一个列表而不更改第一个?

我是Python的新手(和整个编程).我很确定答案很明显,但我真的不知道该怎么做.

def do_play(value, slot, board):
    temp=board
    (i,j) = slot
    temp[i][j] = value
    return temp
Run Code Online (Sandbox Code Playgroud)

board是列表.value是一个整数.slot是和整数元组.

我想在这里做的是

  • 喂功能板
  • 将电路板复制到名为temp的新列表中
  • 在temp中的特定位置插入新值
  • 返回温度,让电路板保持不变

当我运行它是shell时,原始列表(板)和新列表(temp)都会发生变化.=

任何帮助,将不胜感激.

python return-value function-declaration

2
推荐指数
2
解决办法
196
查看次数

SML中的"循环"功能声明

我想以"循环"方式使用函数,如以下示例所示:

fun cll1 (s)= cll2(s);
fun cll2 (s)= cll3(s);
fun cll3 (s)= cll(s);
Run Code Online (Sandbox Code Playgroud)

写这个会在SML中产生错误,构造函数cll2是未绑定的.有人可以帮我写这些内容吗?它可能在C; 我想用SML编写它.

function sml function-declaration

2
推荐指数
1
解决办法
462
查看次数

[]也是C中的声明符(在参数声明中使用时)吗?

6.7.6声明者

每个声明符声明一个标识符,并声明当与表达式中出现的声明符形式相同的操作数出现在表达式中时,它指定一个函数或对象,其范围,存储持续时间和声明说明符指示的类型.

并且还说明了参数的语法:

parameter-declaration:
    declaration-specifiers declarator
    declaration-specifiers abstract-declarator(opt)
Run Code Online (Sandbox Code Playgroud)

对于给定的函数原型

int f( int a[], int n); 
Run Code Online (Sandbox Code Playgroud)

int a[]使用声明a[]符声明一个参数,声明一个标识符a.


如果是的话

int f( int [], int n);
Run Code Online (Sandbox Code Playgroud)

int []declares参数是一个int数组,没有标识符.
是否[]也说明符?(我认为不是因为它没有声明标识符,但参数的语法表明它是!)

c function-declaration

2
推荐指数
1
解决办法
166
查看次数

匿名结构作为返回类型

以下代码可以在vc ++ 19.00.23506(标志:)/Wall /WX /Zavc ++ 19.10.25109.0(标志:/Wall /WX /Za /permissive-,可以在http://webcompiler.cloudapp.net上进行检查)下正常编译,但不能与clang 3.8.0一起编译。g ++ 6.3.0(标志:)-std=c++11 -Wall -Wextra -Werror -pedantic-errors。这是vc ++中的错误吗?标准是否禁止这种构造?

struct
{
}
foo()
{
    return {};
}

int main()
{
}
Run Code Online (Sandbox Code Playgroud)

c++ struct return-type visual-c++ function-declaration

2
推荐指数
1
解决办法
686
查看次数

作为函数参数的"指向寄存器变量的指针"有什么作用?

据我所知,register说明符提示编译器将变量存储在寄存器中.这一切都很好,直到我XKBlib.h从Xorg-7.7中看到以下声明:

extern  int     XkbTranslateKeySym(
    Display *           /* dpy */,
    register KeySym *       /* sym_return */,
    unsigned int        /* modifiers */,
    char *          /* buffer */,
    int             /* nbytes */,
    int *           /* extra_rtrn */
);
Run Code Online (Sandbox Code Playgroud)

注意如何sym_return作为指向寄存器变量指针传递.是什么让我想知道的是

  1. 这似乎是允许的,尽管无法获取寄存器变量的地址,
  2. 这在某种程度上似乎很重要,可以在函数声明中提到.

点1似乎在某种程度上是无效的,因为我似乎能够将指针传递给非register变量,即使-pedantic-errors是GCC的标志.

那么,与带有省略register关键字的声明相比,这个声明有什么变化呢?它会改变召唤惯例还是什么?

c function calling-convention function-declaration register-keyword

2
推荐指数
1
解决办法
191
查看次数

C++ 20模块TS:还需要函数声明吗?

我希望向那些尝试过C++ 20模块的人提出一个小问题

根据TS,这个代码应该在C++ 20中编译吗?

void f1() { f2(); }
void f2() { ... }
Run Code Online (Sandbox Code Playgroud)

例如,在C++ 11中它不会编译,因为f1()不"知道"f2(),必须在使用前声明f2().

但也许在C++ 20中,这个要求将在模块中消除?

如果没有编译第一个代码片段,那么这个代码片段是否会编译

void f1() { f2(); }
export void f2() { ... }
Run Code Online (Sandbox Code Playgroud)

因为从BMI可以看到f2()?

c++ module function-declaration c++20

2
推荐指数
1
解决办法
217
查看次数

使用自动使用新的C++ 11语法但使用auto&without - >的函数声明

考虑下面的函数定义:

auto& Fnc1() { return someNonLocalVariable; }
Run Code Online (Sandbox Code Playgroud)

在这种情况下, - >未明确指定返回类型.但是有&after auto关键字.这是否保证返回引用而不是变量的副本?这是支持的语言功能(返回参考)吗?使用VS 2017,它可以按照我的预期工作:返回参考.但我找不到任何在线资源来验证.

c++ function-declaration auto return-type-deduction c++14

2
推荐指数
1
解决办法
111
查看次数

数组具有不完整的元素类型。这是什么意思?

我想创建一个存储任何整数 n 的乘法值的数组。之后,我想将该数组传递给另一个函数并打印出该数组。但是,我收到以下错误:

我的代码:

这是我的 .c 文件:

 #include "multiplication.h"
#include <stdio.h> 
int main(){
int num;
int arr=multiplication(4);
printArray(arr);



}

int mulitpication(int num){
 /* initialize array and build*/
    int arr[num][num];
    for(int i=0; i<num;i++){
        printf("row number: %d ",i);
         for(int j=0;j<num;j++){
             printf("column number: %d", j);
            arr[i][j]= (i+1)*(j+1);
         }
    }
    return arr;
    }

    void printArray(int arr[][]){
    
    int i;
    for(i=0;i<sizeof(arr);i++){
        for(int j=0;j<sizeof(arr);j++){
            printf("%d ",arr[i][j]);
        }
        
    }
Run Code Online (Sandbox Code Playgroud)

这是我的头文件:

void multiplication(int num);
void print(int arr[][]);
Run Code Online (Sandbox Code Playgroud)

错误:

 multiplication.h:4:19: error: array has incomplete element type 'int []' …
Run Code Online (Sandbox Code Playgroud)

c arrays function-declaration

2
推荐指数
1
解决办法
204
查看次数

了解如何使用带有指针作为参数的 typedef void 函数

我试图理解用 C 编写的固件,它驱动超宽带连接的芯片。

固件大量使用typedef和指针。我已经了解固件背后的大部分想法,但有一个typedef void功能我无法理解。

基本上,固件创建了一个结构来保存设备数据

typedef struct
{
   //some data
   dwt_cb_t    cbTxDone; // Callback for TX confirmation event
   //some other data
} dwt_local_data_t ;
Run Code Online (Sandbox Code Playgroud)

我知道该结构名为dwt_local_data_t并包含一些变量,包括这种奇怪的dwt_cb_t类型。

在 .h 文件中dwt_cb_t被命名为

// Call-back type for all events    
typedef void (*dwt_cb_t)(const dwt_cb_data_t *);
Run Code Online (Sandbox Code Playgroud)

其中dwt_cb_data_t是另一种形式的结构

typedef struct
{
    uint32 status;      //initial value of register as ISR is entered
    uint16 datalength;  //length of frame
    uint8  fctrl[2];    //frame control bytes
    uint8  rx_flags;    //RX frame …
Run Code Online (Sandbox Code Playgroud)

c c++ pointers typedef function-declaration

2
推荐指数
2
解决办法
527
查看次数

如何在没有头文件的情况下调用像 time() 这样的 C 函数?

根据我检查的文档,time_t time(time_t *seconds)<time.h>头文件下声明。然而,当我运行这段代码时:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    srand(time(NULL));
    printf("%d",rand());
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

不包括<time.h>,它工作正常,或者至少工作。怎么会这样?

c header-files forward-declaration function-declaration c-header

2
推荐指数
1
解决办法
86
查看次数