从函数返回一个数组的2种方法 (C专家编程 p230)
严格来说,无法从函数返回一个数组,但可以从函数返回一个指向任何数据结构的指针,包括一个指向数组的指针。
一种方式如下:
#include <stdio.h>
#include <stdlib.h>
int (*func())[20];//func是一个函数,它返回一个指向包括20个int元素的数组的指针
int main(void)
{
int (*result)[20];
int i = 0;
result = func();
for(i = 0; i < 20; i++){
printf("%d\n", (*result)[i]);
}
free(result);
exit(0);
}
int (*func())[20]
{
int (*a)[20];
int i = 0;
a = calloc(20, sizeof(int));
if(a == NULL){
perror("calloc error");
exit(1);
}
for(i = 0; i < 20; i++){
a[0][i] = i;
}
return a;
}
千万要注意:不能从函数中返回一个指向函数的局部变量的指针。
另一种方式如下:
#include <stdio.h>
#include <stdlib.h>
struct tag{
int array[20];
}x, y;
struct tag func(void);
int main(void)
{
&n
相关文档:
这篇文章是使用SQLite C/C++接口的一个概要介绍和入门指南。
由于早期的SQLite只支持5个C/C++接口,因而非常容易学习和使用,但是随着SQLite功能的增强,新的C/C++接口不断的增加进来,到现在有超过150个不同的API接口。这往往使初学者望而却步。幸运的是,大多数SQLite中的C/C++接口是专用的,因而很少被使用到。尽管有这 ......
将类成员函数用做C回调函数
提出问题:
回调函数是基于C编程的Windows SDK的技术,不是针对C++的,程序员可以将一个C函数直接作为回调函数,但是如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。
分析原因:
普通的C++成员函数都隐含了一个传递函数 ......
C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码 。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建 议,以进一步加强这方面的清单。
1、http://snippets.dzone.com/tag/c/ --数以千 ......
1.动态获得内存的代码:
void GetMemory(char **p, int num)
{
*p = (char *)malloc(sizeof(char) * num);
}
char* GetMemory2(int num)
{
char* p = (char *)malloc(sizeof(char) * num);
return p;
}
------------------------------------------
错误的代码:
void Ge ......