正在讨论的程序试图计算sum-of-first-n-natural-numbers使用recursion.我知道这可以使用一个简单的公式来完成,n*(n+1)/2但这里的想法是使用recursion.
该计划如下:
#include <stdio.h>
unsigned long int add(unsigned long int n)
{
return (n == 0) ? 0 : n + add(n-1);
}
int main()
{
printf("result : %lu \n", add(1000000));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该计划运作良好,n = 100,000但当价值n增加到1,000,000它导致aSegmentation fault (core dumped)
以下内容取自该gdb消息.
Program received signal SIGSEGV, Segmentation fault.
0x00000000004004cc in add (n=Cannot access memory at address 0x7fffff7feff8
) at k.c:4
Run Code Online (Sandbox Code Playgroud)
我的问题:
是否有任何硬连接限制recursion depth …
玩指针C很有趣(不是真的).
我有几个字符串数组我想以简单的方式声明,最好是:
arrayOfStrings1 = {"word1", "word2", etc. };
arrayOfStrings2 = {"anotherword1", "anotherword2", etc. };
arrayOfStrings3 = etc.
etc.
Run Code Online (Sandbox Code Playgroud)
类似于翻译数组的东西(但不完全),所以我希望能够在运行时间间隔这些.为此,我想要一个pointerToArrayOfStrings我可以交换的指针:
pointerToArrayOfStrings = arrayOfStrings1;
doStuff();
pointerToArrayOfStrings = arrayOfStrings2;
doSomeOtherStuff();
Run Code Online (Sandbox Code Playgroud)
在我对字符串数组和指向这些字符串的指针的天真理解中,这就是我所尝试的:
// Danish transforms
const unsigned char* da_DK[] = {"b","bb","c","c","cc","d","dd","e","f","ff","g","gg","h","hh","j","j","jj","k","k","kk","l","l","l","l","ll","m","mm","n","n","nn","p","pp","r","r","r","rr","s","s","s","ss","t","t","tt","v","v","vv","æ"};
// British english transforms
const unsigned char* en_GB[] = {"a","a","a","a","a","a","a","a","a","a","a","a","a","age","ai","aj","ay","b","cial","cian","cian","dj","dsj","ea","ee","ege","ei","ei","eigh","eigh","f","f","f","g","g","gs","i","i","i","j","j","k","ks","kw","l","m","n","n","o","r","s","s","sd","sdr","sion","sion","sj","sj","tial","tion","tion","tj","u","u","u","u","w","ye","ye","z"};
// More languages....
const unsigned char** laguageStrings;
// Assign language
if (streq(language, "da-DK")){
laguageStrings= da_DK;
}
else if (streq(language, "en-GB")){
laguageStrings= en_GB;
}
else
return 0;
}
Run Code Online (Sandbox Code Playgroud)
语言是char …
我正在尝试将(循环)队列(在C中)设计/实现为共享内存,以便它可以在多个线程/进程之间共享.
队列结构如下:
typedef struct _q {
int q_size;
int q_front;
int q_rear;
int *q_data;
}queue;
Run Code Online (Sandbox Code Playgroud)
它支持以下功能:
int empty_q(queue *q);
int display_q(queue *q);
int create_q(queue **q, int size);
int delete_q(queue **q);
int enqueue(queue *q, int data);
int dequeue(queue *q, int *data);
Run Code Online (Sandbox Code Playgroud)
根据用户提到的队列大小,q_data的内存将在create_q()中分配.
问题:如何使用"sys/shm.h"中提供的系统函数为此队列创建共享内存?用于创建/附接/检索/删除使用共享存储器用于队列数据结构中的任何的代码段/示例shmget的(),的shmat(),了shmctl()等将是一个很大的帮助.
假设我们有两个结构:
typedef struct Struct1
{
short a_short;
int id;
} Struct1;
typedef struct Struct2
{
short a_short;
int id;
short another_short;
} Struct2;
Run Code Online (Sandbox Code Playgroud)
从哪里投Struct2 *来安全Struct1 *?ANSI规范对此有何规定?我知道有些编译器可以选择重新排序结构字段以优化内存使用,这可能会使两个结构不兼容.有没有办法确定这段代码是否有效,无论编译器标志如何?
谢谢!
我正在研究windows和DLL的东西,我对它有一些疑问.:)
我做了一个加载我自己的DLL的简单程序.这个DLL只有简单的函数,加上减号.
这是一个问题:如果我加载一些DLL(例如text.dll),这个DLL是否总是具有相同的基址?或者重新启动时它会改变吗?我可以保存DLL的基地址吗?
当我测试它时,它总是有相同的基地址,但我想我需要做的时候,我必须对DLL基地址做一些例外.
我有一个动态库,我加载使用dlopen()然后卸载使用dlclose();
如果我不包含任何目标c代码dlopen()需要一个dlclose()预期行为的调用.但是当我将任何目标c代码包含在目标中时,我遇到的问题是我需要对dlclose()加载的库进行两次调用才能卸载.
这是预期的行为吗?我该如何解决?
如何使用其他程序将按键或按键释放事件发送到窗口(当前活动窗口)XCB?
我找到了一些使用的教程XLib,但是我想使用它XCB.
我想我将不得不打电话xcb_send_event,但是我不知道将它作为参数传递给我.
在任何C程序中,命令行参数argv[0]指向用于调用程序的名称.是否存在任何指向空字符串的情况""?
这种情况的示例代码片段将是一个很好的参考.
我有以下飞镖码:
$ cat helloworld.dart
main() => print('Hello world!');
$
Run Code Online (Sandbox Code Playgroud)
dart编译器为上面代码生成的javascript代码如下:
$ cat helloworld.dart.app.js
function native_ListFactory__new(typeToken, length) {
return RTT.setTypeInfo(
new Array(length),
Array.$lookupRTT(RTT.getTypeInfo(typeToken).typeArgs));
}
function native_ListImplementation__indexOperator(index) {
return this[index];
}
function native_ListImplementation__indexAssignOperator(index, value) {
this[index] = value;
}
function native_ListImplementation_get$length() {
return this.length;
}
function native_ListImplementation__setLength(length) {
this.length = length;
}
function native_ListImplementation__add(element) {
this.push(element);
}
function native_BoolImplementation_EQ(other) {
return typeof other == 'boolean' && this == other;
}
function native_BoolImplementation_toString() {
return this.toString();
}
<snapped>
var static$uninitialized = {};
var …Run Code Online (Sandbox Code Playgroud) 我想实现WiFi管理程序,它应该处理以下内容.
哪个是Linux推荐的C/C++ WiFi库来实现这个目标?