随笔分类 - C
摘要:1 问题描述 在此之前,我对C中函数调用过程中栈的变化,仅限于了解有好几种参数的入栈顺序,其中的按照形参逆序入栈是比较常见的,也仅限于了解到这个程度,但到底在一个函数A里面,调用另一个函数B的过程中,函数A的栈是怎么变化的,实参是怎么传给函数B的,函数B又是怎么给函数A返回值的,这些问题都不能很明白的一步一步解释出来。下面,便是用一个小例子来解释这个过程,主要回答的问题是如下几个: 1、函数A在执行到调用函数B的语句之前,栈的结构是什么样子? 2、函数A执行调用函数B这一条语句的过程中,A的栈是怎样的? 3、在执行调用函数B语句时,实参是调用函数A来传入栈,还是被调函数B来进行入栈? ...
阅读全文
摘要:1 /* 2 * stdarg.h 3 * 4 * Provides facilities for stepping through a list of function arguments of 5 * an unknown number and type. 6 * 7 * NOTE: Gcc should provide stdarg.h, and I believe their version will work 8 * with crtdll. If necessary I think you can replace this with th...
阅读全文
摘要:可变参数函数主要是利用了三个宏,va_start, va_arg, va_end和一个类型va_list。先写个小例子,然后再说明这三个宏的含义。例:计算指定数量的值的平均值 1 #include <stdarg.h> 2 3 float 4 average(int n_val, ...) 5 { 6 va_list arg; // 等价于char *arg; 7 int count; 8 float sum = 0; 9 10 va_start(arg, n_val); // arg = &n_val + 4 (假设这里int长度是4个字节)11 ...
阅读全文
摘要:1 #include <iostream> 2 3 using namespace std; 4 int toInteger(char string[]); 5 int main(){ 6 char string[100]={0}; 7 cin>>string; 8 cout<<toInteger(string)<<endl; 9 return 0;10 }11 12 int toInteger(char string[])13 {14 //Your code is here15 int ret = 0;16 bool flag = ...
阅读全文
摘要:题目描述: 题目要求是:unsigned int reverse_bits(unsigned int value);这个函数的返回值是把value的二进制位模式从左到右变换一下后的值。例如,在32位机器上,25这个值包含下列各个位: 00000000 00000000 00000000 00011001函数的返回值应该是2 550 136 832,它的二进制位模式是: 10011000 00000000 00000000 00000000要求是:不能让函数依赖于机器上整型数值的长度。答案代码以及解释: 题目看上去是比较简单的,不知道大家是怎么想的。下意识的第一想是从这个value的最右...
阅读全文
摘要:今天在C和指针P63看到了这个计算公式,ai+1= ( ai + number/ai) / 2。之前也有在网上看到过,不过出处忘了,记得好像是关于组合数学还是数论里面的一个内容。公式很简单,理论这个我就不懂了,还希望各位给指导一下。下面贴出自己的代码,作为记忆保留。 1 float my_sqrt(float number) { 2 float new_guess; 3 float last_guess; 4 5 if (number < 0) { 6 printf("Cannot compute the square root of a ne...
阅读全文

浙公网安备 33010602011771号