Tag: 函数

如何在gcc中打印UINT64_t?

为什么这段代码不起作用? #include main() { UINT64_t ram = 90; printf(“%d””\n”, ram); } 我收到以下错误: In function \u2018main\u2019 error: \u2018UINT64_t\u2019 undeclared (first use in this function) error: (Each undeclared identifier is reported only once error: for each function it appears in.) error: expected \u2018;\u2019 before \u2018ram\u2019

如何使函数返回C中多个变量类型的结果?

刚开始从Cocoa开发指南中学习C,我想知道如何(如果可能的话)我将返回具有多个变量类型的函数的结果。 例如,我有一个简单的数学函数,我练习我正在阅读的东西,我给它多个变量类型: #include float doMath (int variable1, float variable2, int variable3, float variable4); main() { printf (“Math is fun!!\n”); float theMath = doMath (2, 3.66, 9009, 7.990); printf ( “Result = %f\n”, theMath ); } float doMath (variable1, variable2, variable3, variable4) { return (variable1 * variable2) + (variable3 – variable4); } 如何在单个函数/等式中正确使用多个变量类型? 另外,我不确定返回行的语法是否正确……我只是对它进行了一次尝试。

从函数返回局部变量

在下面的代码中,我返回一个指向函数内部本地创建的char数组的指针。 因此,当返回值分配给y ,它应该都是垃圾。 当我打印%10s或%100s时,这似乎也适用。 但是当我打印%1000s ,我得到的输出似乎让我感到困惑。 #include char* get() { char x[1000] ; int i = 0; for(; i < 999; ++i) { x[i] = 'A'; } x[999] = '\0'; printf("%1000s\n",x); return x; } int main() { char* y = get(); printf("Going to print\n"); printf("%1000s\n",y); } 输出是 main()函数访问用于创建本地函数char数组的相同内存位置是巧合还是更具体?

如何识别C中整数输入的具体数字?

我需要得到包含数字1的数字位数。我知道在java中我可以将输入作为String并使用charAt ,但我知道C中没有隐式字符串函数。我怎么能完成这个?

函数参数中的int * vs int vs int(*)。 我应该使用哪一个?

在C编程语言中,有许多不同的方法来声明函数的参数,该函数将数组作为通过指针传递的参数。 我准备了一个例子,告诉你我的意思。 它是C ++中std::accumulate函数的一个实现。 它是一个函数,它可以在数组中添加所有元素并返回结果。 我可以这样写: int accumulate(int n, int *array) { int i; int sum = 0; for (i = 0; i < n; ++i) { sum += array[i]; } return sum; } 这也可以写到这(这意味着完全相同): int accumulate(int n, int array[]) { int i; int sum = 0; for (i = 0; i < n; ++i) […]

尽管指定,打印也不会在打印数组中显示

我正在为我的第一年工作做一个简单的糖果粉碎游戏。 我正处于这个阶段,一旦程序执行,我需要在板的中心( board[5][5] )上显示我自制的简单标记(*框由’|’和’_’*组成) 。 这是当前的代码: #include #include #include //FUNCTION: Draw the Board int drawBoard() { //Declare array size int board[9][9]; //initialize variables int rows, columns, randomNumber, flag; //random number seed generator srand(time(NULL)); for ( rows = 0 ; rows < 9 ; rows++ ) { for ( columns = 0 ; columns < 9 […]

为什么某些库例程同时实现为宏? 为什么“va_arg”宏被声明为一个函数(没有“#define”)?

我正在努力用语言清楚地表达出来。 所以让我把它分成几部分。 背景来自Mike Banahan的C书(链接在下面的每个部分提供)。 这是我的问题,作为粗体的要点: 为什么某些库函数同时也实现为宏? 有什么需要? 这是我从书中读到的内容(第9.1.1节) : 最后一点是,许多库例程可以实现为宏,前提是副作用没有问题(如第7章所述)。 标准保证,如果函数通常作为宏实现,则还将提供用于执行相同作业的真实函数。 要使用真实函数,可以使用#undef取消定义宏名称,或将其名称括在括号中,这样可以确保它不会被视为宏: 我们知道, va_start是一个函数还是宏? 书中的以下文字是混乱的根源,因为它暗示着相同的气息,相邻的线条! (第9.9节) 在尝试访问变量参数列表之前,必须调用va_start 。 它被定义为 #include void va_start(va_list ap, parmN); va_start宏初始化ap以供函数va_arg和va_end随后使用。 最后,最令人困惑的部分。 在下面一行中,清楚地写明了va_arg是一个宏,并继续展示它是如何实现的。 但是如何在没有#define关键字的情况下实现宏,并且返回类型(’type’)也是如此,就好像它是一个函数一样? (第9.9节) 初始化后,可以通过va_arg宏顺序访问提供的参数。 这很奇怪,因为返回的类型由宏的参数决定。 请注意,这不可能作为真正的函数实现,仅作为宏。 它被定义为 #include type va_arg(va_list ap, type); 非常感谢您的回答。 谢谢。

用C语言调用fprintf语法中的函数

我正在尝试将我的字符串输出打印到一个单独的文件中。 我现在遇到的问题是我的代码带有一组字符串的函数,这些字符串在我的列下面添加了虚线(纯粹是化妆品)。 如何在我的fprintf代码中调用此函数? #include /* function for the dash-line separators*/ void dashes (void) { printf (” —- —– ——————– ————–\n”); } /* end of function definition */ /* main program */ #include #include int main (void) { FILE *data_File; FILE *lake_File; FILE *beach_File; FILE *ecoli_Report; char fileName[10], lake_Table[15],beach_Table[15]; /*.txt file names */ char province[30] = […]

使用函数与宏时,为什么会得到不同的结果?

我正在使用DevCPP IDE,我发现在用c编程时, 返回的值: float f(float x) { return 1/(1+x*x); } 和f(x)返回的值如果定义为: #define f(x) 1/(1+x*x) 是不同的。 为什么我在这些情况下会得到不同的结果? 编辑: 这是我的代码,我得到了exception: main() { int i; float a=0, b=1, h, n=12, s1, s2=0; h=(ba)/n; //step length s1=f(a)+f(b); for(i=1;i<=n-1;i++) { s2+=f(a+(i*h)); } s1=(s1+2*s2)*h/2; printf("sum: %f", s1); getch(); } 输出1:0.693581(使用MACRO) 输出2:0.785109(使用function)

修改作为指针传递的结构 – C

我试图通过使用指针来修改作为参数传递的结构,但是我无法使其工作。 我不能只返回结构,因为该函数必须返回一个整数。 如何修改函数中的结构? 这是我到目前为止所做的: typedef enum {TYPE1, TYPE2, TYPE3} types; typedef struct { types type; int act_quantity; int reorder_threshold; char note[100]; }elem; int update_article(elem *article, int sold) { if(*article.act_quantity >= sold) { article.act_quantity = article.act_quantity – sold; if(article.act_quantity < article.act_quantity) { strcpy(article.note, "to reorder"); return -1; } else return 0; } else if(article.act_quantity < venduto) […]