基础
栈(stack) 保存动态分配的自动变量时值,并且栈又操作系统自动分配内存。
测试程序:
cat sum.c
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#define MAX (1UL << 20)
typedef unsigned long u64;
typedef unsigned int u32;
u64 max_addend = MAX;
u64 sum_till_MAX(u32 n)
{
u64 sum;
n++;
sum = n;
if(n < max_addend)
sum += sum_till_MAX(n);
return sum;
}
int main(int argc, char **argv)
{
u64 sum = 0;
if((argc == 2) && isdigit(*(argv[1])))
max_addend = strtoul(argv[1], NULL, 0);
if(max_addend > MAX || max_addend == 0){
fprintf(stderr, "Invalid number is specified\n");
return 1;
}
sum = sum_till_MAX(0);
printf("sum(0..%lu) = %lu\n", max_addend, sum);
return 0;
}
下面求出从0到10的总和
$ gcc -o sum -g sum.c
$ ./sum 10
sum(0..10) = 55