Tag: 函数

将char缓冲区传递给函数并获取缓冲区的大小

我已将缓冲区设置为100.我在声明缓冲区的main函数中显示缓冲区。 但是,当我将缓冲区传递给函数并获得sizeof’4’时,我认为它应该是100,因为这是我在main中创建的缓冲区的大小。 输出:缓冲区大小:100 sizeof(缓冲区):4 #include #include void load_buffer(char *buffer); int main() { char buffer[100]; printf(“buffer size: %d\n”, sizeof(buffer)); load_buffer(buffer); return 0; } void load_buffer(char *buffer) { printf(“sizeof(buffer): %d\n”, sizeof(buffer)); }

函数参数中的静态关键字

我刚刚在一些嵌入式代码中找到了这个函数定义: float round_float_to_4(static float inputval); 我熟悉静态 (全局变量,函数和局部变量)的其他用法,但这是我第一次将其视为函数参数的说明符。 我假设这迫使编译器使用固定内存位置的inputval而不是堆栈?

function到mangle / demangle函数

我之前已经certificate,C ++函数不易在汇编中表示。 现在我有兴趣阅读这种或那种方式,因为callgrind,valgrind的一部分,显示它们在组装时被解构,它们被显示为损坏,所以我想要破坏valgrind函数输出或者取消函数的汇编名称。 有人试过这样的东西吗? 我正在查看一个网站 ,发现以下内容: Code to implement demangling is part of the GNU Binutils package; see libiberty/cplus-dem.c and include/demangle.h. 有人试过这样的东西,我想在C中解码/破坏吗? 我的编译器是gcc 4.x.

为什么这个“隐含声明函数’X’”?

我写了一个简单的程序来查找3个数字的Sum,average,maximum和最小数。 它允许用户输入三个(整数)数字并返回总和,平均值,最大值和最小值。 它没有错误,只有警告。 这是我的源代码: main.c中: #include int main() { int num1, num2, num3, sum, max, min, avg; printf(“Enter Three \”Integer\” Numbers:”); scanf(“%i%i%i”, &num1, &num2, &num3); sum = summation(&num1, &num2, &num3); avg = average(&sum); max = max_val(&num1, &num2, &num3); min = min_val(&num1, &num2, &num3); printf(“Sum: %i Avg: %i MAX: %i MIN: %i”, sum, avg, max, min); […]

C:将可变数量的参数从一个函数传递到另一个函数

所以,这是我现在面临的一个小问题 – >我正在尝试编写一个接受char *消息和可变数量参数的函数。 我的函数会稍微修改一下消息,然后它会用消息和给定的参数调用printf。 实际上,我正在尝试写这样的东西: void modifyAndPrintMessage(char* message,…){ char* newMessage; //copy message. //Here I’m modifying the newMessage to be printed,and then I’d like to print it. //passed args won’t be changed in any way. printf(newMessage,…); //Of course, this won’t work. Any ideas? fflush(stdout); } 所以,任何人都知道我该怎么做才能实现它? 我会非常感谢任何帮助:)

Objective C类方法与C函数

在开发源代码项目时,我遇到了以下C函数声明和实现: // FSNData.h NSString *stringForMimeType(MimeType type); @interface FSNData : NSObject // All the expected objective-c property and instance method declarations @end // FSNData.m #import “FSNData.h” // where ‘type’ is an enum // this does work as expected NSString *stringForMimeType(MimeType type) { switch (type) { case MimeType_image_jpeg: return @”image/jpeg”; case MimeType_image_png: return @”image/png”; default: NSLog(@”ERROR: FSNData: […]

简单的哈希函数

我正在尝试编写一个使用哈希表来存储不同单词的C程序,我可以使用一些帮助。 首先,我创建一个哈希表,其中素数的大小最接近我必须存储的单词的数量,然后我使用哈希函数来查找每个单词的地址。 我从最简单的function开始,将字母加在一起,结果是88%的碰撞。 然后我开始尝试该function,发现无论我改变它,碰撞都不会低于35%。 现在我正在使用 unsigned int stringToHash(char *word, unsigned int hashTableSize){ unsigned int counter, hashAddress =0; for (counter =0; word[counter]!=’\0′; counter++){ hashAddress = hashAddress*word[counter] + word[counter] + counter; } return (hashAddress%hashTableSize); } 这只是我提出的随机function,但它给了我最好的结果 – 大约35%的碰撞。 过去几个小时我一直在阅读关于散列函数的文章,我尝试使用一些简单的函数,比如djb2,但是所有这些都给了我更糟糕的结果。(djb2导致了37%的碰撞,这是’更糟糕的是,但我期待更好而不是更糟糕的事情)我也不知道如何使用其他更复杂的一些,比如murmur2,因为我不知道参数是什么(关键,len ,种子)他们接受的是。 即使使用djb2,或者我做错了什么,获得超过35%的碰撞是正常的吗? 什么是关键,len和种子价值?

C中的冒泡排序算法

我试图完成的程序是一个使用冒泡排序算法的程序。我不确定问题是什么或问题在哪个函数中。问题是程序没有正确排序数组。(它也必须按升序排列)。 这是代码: #include #include “simpio.h” void getArray (int arr[], int size); void sortArray (int arr[], int size); void swap (int arr[], int num, int number); void dispArray (int arr[], int size); bool checkBigger (int arr[], int num, int number); main() { int size; printf(“Enter number of elements: “); size=GetInteger(); int arr[size]; getArray(arr, size); sortArray(arr, size); […]

C函数用于大写数组中单词的第一个字母

我对C很陌生,在创建以下function时遇到了障碍。 我想使用这个函数来为一个静态字符数组(char string []创建单词大写的第一个字母。它看起来不错,但我得到一些语法错误,这可能是非常基本的。编译器错误: 错误:无效转换从const char’ to const char *’初始化`size_t strlen(const char *)的参数1’只读位置的赋值 void Cap(char string[]){ int i; int x = strlen(string); for (i=1;i<x;i++){ if (isalpha(string[i]) && string[i-1] == ' '){ // only first letters of a word. string[i]= toupper(string[i]); }if (isalpha(string[0])) { string[0]=toupper(string[0]); } } }

将字符串传递给C中的函数 – 有或没有指针?

当我将字符串传递给函数时,有时我会使用 char *functionname(char *string name[256]) 有时我会在没有指针的情况下使用它(例如: char functionname(char string[256]) 我的问题是,我什么时候需要使用指针? 我经常在没有指针的情况下编写程序而且它有效,但有时却没有。