[向ganpengjin1,turingo提问] 问一个简单问题(2)如何声明一个返回数组的函数

kkun_3yue3 2013-07-10 11:00:07

如图所示,VS2010提示语法错误,我该如何声明这个函数才能做到:
1),返回数组参数a的引用或者指针?
2),如果要返回全新的数组呢?
...全文
190 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
图灵狗 2013-07-10
  • 打赏
  • 举报
回复
大概是这样的做法:

int* quick_sort(int a[])
{
    int* b = (int*)malloc(100);
    ...
    return b;
}

...

int a[] = {1, 2, 3};
int* b = quick_sort(a);
...
free(b);
引用 楼主 kkun_3yue3 的回复:
如图所示,VS2010提示语法错误,我该如何声明这个函数才能做到: 1),返回数组参数a的引用或者指针? 2),如果要返回全新的数组呢?
minnnnmi 2013-07-10
  • 打赏
  • 举报
回复
void quick_sort(int *a) // 这个参数其实既是一个输入类型的参数,也是个输出类型的参数。
rocktyt 2013-07-10
  • 打赏
  • 举报
回复
引用 8 楼 kkun_3yue3 的回复:
[quote=引用 5 楼 rocktyt2 的回复:] [quote=引用 4 楼 kkun_3yue3 的回复:] [quote=引用 1 楼 starytx 的回复:] int * quick_sort(int a[]) { return a; }
int *不是返回int指针吗?它与int[]不等同吧[/quote] quick_sort(int a[])传进去的参数实际上也是int*啊[/quote] 那我是不是可以这样声明
int * quick_sort(int *a)
{
    return a;
}
[/quote]可以
  • 打赏
  • 举报
回复
可以返回数组的指针,但必须指定数组的大小
typedef int(Array)[10];
Array* quick_sort( Array* a )
{
	return a;
}
真不如
int* quick_sort( int*a )
{
	return a;
}
minnnnmi 2013-07-10
  • 打赏
  • 举报
回复
可以这样,其实你没必要返回值。 void quick_sort(int *a) { return; } 就行了。
kkun_3yue3 2013-07-10
  • 打赏
  • 举报
回复
引用 5 楼 rocktyt2 的回复:
[quote=引用 4 楼 kkun_3yue3 的回复:] [quote=引用 1 楼 starytx 的回复:] int * quick_sort(int a[]) { return a; }
int *不是返回int指针吗?它与int[]不等同吧[/quote] quick_sort(int a[])传进去的参数实际上也是int*啊[/quote] 那我是不是可以这样声明
int * quick_sort(int *a)
{
    return a;
}
minnnnmi 2013-07-10
  • 打赏
  • 举报
回复
一般的需求,你返回个数组指针就行了。 或者你用vector来代替。
minnnnmi 2013-07-10
  • 打赏
  • 举报
回复
C++不能返回数组,数组本身又不支持赋值操作。 int a[5]; int b[5]; b = a; // c++不支持这样的操作
rocktyt 2013-07-10
  • 打赏
  • 举报
回复
引用 4 楼 kkun_3yue3 的回复:
[quote=引用 1 楼 starytx 的回复:] int * quick_sort(int a[]) { return a; }
int *不是返回int指针吗?它与int[]不等同吧[/quote] quick_sort(int a[])传进去的参数实际上也是int*啊
kkun_3yue3 2013-07-10
  • 打赏
  • 举报
回复
引用 1 楼 starytx 的回复:
int * quick_sort(int a[]) { return a; }
int *不是返回int指针吗?它与int[]不等同吧
rocktyt 2013-07-10
  • 打赏
  • 举报
回复
可以考虑一下返回std::array
sduxiaoxiang 2013-07-10
  • 打赏
  • 举报
回复
返回int*就是 全新的new了返回就是了 ,用完delete就ok
starytx 2013-07-10
  • 打赏
  • 举报
回复
int * quick_sort(int a[]) { return a; }
The C programming Language 第二版英文版 內容列表 Table of Contents Preface.......................................................... Preface to the first edition..................................... Introduction..................................................... Chapter 1 - A Tutorial Introduction.............................. 1.1 Getting Started................................ 1.2 Variables and Arithmetic Expressions........... 1.3 The for statement.............................. 1.4 Symbolic Constants............................. 1.5 Character Input and Output..................... 1.5.1 File Copying.......................... 1.5.2 Character Counting.................... 1.5.3 Line Counting......................... 1.5.4 Word Counting......................... 1.6 Arrays......................................... 1.7 Functions...................................... 1.8 Arguments - Call by Value...................... 1.9 Character Arrays............................... 1.10 External Variables and Scope.................. Chapter 2 - Types, Operators and Expressions..................... 2.1 Variable Names................................. 2.2 Data Types and Sizes........................... 2.3 Constants...................................... 2.4 Declarations................................... 2.5 Arithmetic Operators........................... 2.6 Relational and Logical Operators............... 2.7 Type Conversions............................... 2.8 Increment and Decrement Operators.............. 2.9 Bitwise Operators.............................. 2.10 Assignment Operators and Expressions.......... 2.11 Conditional Expressions....................... 2.12 Precedence and Order of Evaluation............ Chapter 3 - Control Flow......................................... 3.1 Statements and Blocks.......................... 3.2 If-Else........................................ 3.3 Else-If........................................ 3.4 Switch......................................... 3.5 Loops - While and For.......................... 3.6 Loops - Do-While............................... 3.7 Break and Continue............................. 3.8 Goto and labels................................ Chapter 4 - Functions and Program Structure...................... 4.1 Basics of Functions............................ 4.2 Functions Returning Non-integers............... 4.3 External Variables............................. 4.4 Scope Rules.................................... 4.5 Header Files................................... 4.6 Static Variables................................ 4.7 Register Variables.............................. 4.8 Block Structure................................. 4.9 Initialization.................................. 4.10 Recursion...................................... 4.11 The C Preprocessor............................. 4.11.1 File Inclusion........................ 4.11.2 Macro Substitution.................... 4.11.3 Conditional Inclusion................. Chapter 5 - Pointers and Arrays.................................. 5.1 Pointers and Addresses......................... 5.2 Pointers and Function Arguments................ 5.3 Pointers and Arrays............................ 5.4 Address Arithmetic............................. 5.5 Character Pointers and Functions............... 5.6 Pointer Arrays; Pointers to Pointers........... 5.7 Multi-dimensional Arrays....................... 5.8 Initialization of Pointer Arrays............... 5.9 Pointers vs. Multi-dimensional Arrays.......... 5.10 Command-line Arguments........................ 5.11 Pointers to Functions......................... 5.12 Complicated Declarations...................... Chapter 6 - Structures........................................... 6.1 Basics of Structures........................... 6.2 Structures and Functions....................... 6.3 Arrays of Structures........................... 6.4 Pointers to Structures......................... 6.5 Self-referential Structures.................... 6.6 Table Lookup................................... 6.7 Typedef........................................ 6.8 Unions......................................... 6.9 Bit-fields..................................... Chapter 7 - Input and Output..................................... 7.1 Standard Input and Output....................... 7.2 Formatted Output - printf....................... 7.3 Variable-length Argument Lists.................. 7.4 Formatted Input - Scanf......................... 7.5 File Access..................................... 7.6 Error Handling - Stderr and Exit................ 7.7 Line Input and Output........................... 7.8 Miscellaneous Functions......................... 7.8.1 String Operations...................... 7.8.2 Character Class Testing and Conversion. 7.8.3 Ungetc................................. 7.8.4 Command Execution...................... 7.8.5 Storage Management..................... 7.8.6 Mathematical Functions................. 7.8.7 Random Number generation............... Chapter 8 - The UNIX System Interface............................ 8.1 File Descriptors............................... 8.2 Low Level I/O - Read and Write................. 8.3 Open, Creat, Close, Unlink..................... 8.4 Random Access - Lseek.......................... 8.5 Example - An implementation of Fopen and Getc.. 8.6 Example - Listing Directories.................. 8.7 Example - A Storage Allocator.................. Appendix A - Reference Manual.................................... A.1 Introduction................................... A.2 Lexical Conventions............................ A.2.1 Tokens................................ A.2.2 Comments.............................. A.2.3 Identifiers........................... A.2.4 Keywords.............................. A.2.5 Constants............................. A.2.6 String Literals....................... A.3 Syntax Notation................................ A.4 Meaning of Identifiers......................... A.4.1 Storage Class......................... A.4.2 Basic Types........................... A.4.3 Derived types......................... A.4.4 Type Qualifiers....................... A.5 Objects and Lvalues............................ A.6 Conversions.................................... A.6.1 Integral Promotion.................... A.6.2 Integral Conversions.................. A.6.3 Integer and Floating.................. A.6.4 Floating Types........................ A.6.5 Arithmetic Conversions................ A.6.6 Pointers and Integers................. A.6.7 Void.................................. A.6.8 Pointers to Void...................... A.7 Expressions.................................... A.7.1 Pointer Conversion.................... A.7.2 Primary Expressions................... A.7.3 Postfix Expressions................... A.7.4 Unary Operators....................... A.7.5 Casts................................. A.7.6 Multiplicative Operators.............. A.7.7 Additive Operators.................... A.7.8 Shift Operators....................... A.7.9 Relational Operators.................. A.7.10 Equality Operators................... A.7.11 Bitwise AND Operator................. A.7.12 Bitwise Exclusive OR Operator........ A.7.13 Bitwise Inclusive OR Operator........ A.7.14 Logical AND Operator................. A.7.15 Logical OR Operator.................. A.7.16 Conditional Operator................. A.7.17 Assignment Expressions............... A.7.18 Comma Operator.......................... A.7.19 Constant Expressions.................... A.8 Declarations..................................... A.8.1 Storage Class Specifiers................. A.8.2 Type Specifiers.......................... A.8.3 Structure and Union Declarations......... A.8.4 Enumerations............................. A.8.5 Declarators.............................. A.8.6 Meaning of Declarators................... A.8.7 Initialization........................... A.8.8 Type names............................... A.8.9 Typedef.................................. A.8.10 Type Equivalence........................ A.9 Statements....................................... A.9.1 Labeled Statements....................... A.9.2 Expression Statement..................... A.9.3 Compound Statement....................... A.9.4 Selection Statements..................... A.9.5 Iteration Statements..................... A.9.6 Jump statements.......................... A.10 External Declarations........................... A.10.1 Function Definitions.................... A.10.2 External Declarations................... A.11 Scope and Linkage............................... A.11.1 Lexical Scope........................... A.11.2 Linkage................................. A.12 Preprocessing................................... A.12.1 Trigraph Sequences...................... A.12.2 Line Splicing........................... A.12.3 Macro Definition and Expansion.......... A.12.4 File Inclusion.......................... A.12.5 Conditional Compilation................. A.12.6 Line Control............................ A.12.7 Error Generation........................ A.12.8 Pragmas................................. A.12.9 Null directive.......................... A.12.10 Predefined names....................... A.13 Grammar......................................... Appendix B - Standard Library.................................... B.1.1 File Operations................................ B.1.2 Formatted Output......................... B.1.3 Formatted Input.......................... B.1.4 Character Input and Output Functions..... B.1.5 Direct Input and Output Functions........ B.1.6 File Positioning Functions............... B.1.7 Error Functions.......................... B.2 Character Class Tests: ................. B.3 String Functions: ..................... B.4 Mathematical Functions: ................. B.5 Utility Functions: ....................

65,199

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧