学习C – C函数指针 声明一个函数的指针 下面的代码展示了如何声明一个指向一个函数的指针。 int (*pfunction) (int); 上面的代码声明一个变量,它是一个指向函数的指针。 这个语句只是定义了指针变量。 指针的名称是 function ,它指向的函数一个int类型的参数和一个int返回类型。 通过函数指针调用函数 假设您定义了一个具有以下原型的函数: int sum(int a, int b); 该函数有两个类型为int的参数,返回类型为int。我们可以为它定义一个函数指针,如下所示。 int (*pfun)(int, int) = sum; 这声明一个名为pfun的函数指针。 它可以存储具有两个参数的函数的地址类型int和类型int的返回值。 该语句还使用函数 sum()的地址初始化 pfun 。 你可以通过函数指针调用sum(),如下所示: int result = pfun(4, 5); 这个语句通过pfun指针调用sum()函数参数值为4和5。 我们可以像函数名一样使用函数指针名称。 假设您定义了另一个具有以下原型的函数: int divide(int a, int b); 您可以使用以下语句存储pfun中的divide()的地址: pfun = divide; 使用包含divide()的地址的 pfun ,您可以通过指针调用divide(): result = pfun(5, 12); 以下代码具有三个具有相同参数的函数并返回类型并使用指向函数的指针来调用它们。 #include <stdio.h> //from w ww . ja v a 2 s . co m // Function prototypes int sum(int, int); int product(int, int); int difference(int, int); int main(void) { int a = 10; int b = 5; int result = 0; int (*pfun)(int, int); // Function pointer declaration pfun = sum; // Points to function sum() result = pfun(a, b); // Call...
学习C – C break 我们可以使用break语句退出for循环。 此示例计算任意数量值的平均值: #include <stdio.h> #include <ctype.h> // For tolower() function int main(void) { char answer = "N"; // Decision to continue the loop double total = 0.0; double value = 0.0; unsigned int count = 0; for( ;; ) // Indefinite loop { printf("\nEnter a value: "); // Prompt for the next value scanf(" %lf", &value); // Read the next value total += value; // Add value to total ++count; // Increment count of values // check for more input printf("Do you want to enter another value? (Y or N): "); scanf(" %c", &answer); // Read response Y or N if(tolower(answer) == "n") // look for any sign of no break; // Exit from the loop...
学习C – C continue 要跳过当前的迭代并继续下一个,请在循环体中使用continue语句。 continue; 例子 #include <stdio.h> int main(void){ int guess = 1; char response; printf("is your number %d?\n", guess); while ((response = getchar()) != "y") /* get response */ { if (response == "n") printf("Well, then, is it %d?\n", ++guess); else printf("Sorry, I understand only y or n.\n"); while (getchar() != "\n") continue; /* skip rest of input line */ } return 0; } 上面的代码生成以下结果。
学习C – C While while循环重复指定逻辑表达式的一组语句。 如果表达式的计算结果为true,则while循环将继续。 while循环的一般语法如下: while( expression ) statement1; statement2; 在开始时测试持续while循环的条件。 如果表达式开始为false,则不会执行循环语句。 如果循环条件开始为真,则循环体必须将其更改为false以结束循环。 以下代码显示了如何使用while循环来求和整数 #include <stdio.h> int main(void) { unsigned long sum = 0UL; // The sum unsigned int i = 1; // Indexes through the integers unsigned int count = 0; // The count of integers to be summed printf("\nEnter the number of integers you want to sum: "); scanf(" %u", &count); // Sum the integers from 1 to count while(i <= count) sum += i++; printf("Total of the first %u numbers is %lu\n", count, sum); return 0; } 上面的代码生成以下结果。 例子 以下代码显示了如何在语法时使用。 #include <stdio.h> int main() { int num = 0; while(num<10){ printf("data %d\n",num); num++; } return 0; } 上面的代码生成以下结果。 注意 在这个例子中,你将在for循环中嵌套一个while循环。 #include <stdio.h> int main(void) {...
学习C – C for 说明迭代场景的简单场景是显示数字列表。 for循环的一般模式是: for(init_condition; control_condition ; action_per_iteration){ loop_statement; } next_statement; 要重复的语句由loop_statement表示。 init_condition 通常将一个初始值设置为一个循环控制变量。 循环控制变量跟踪循环已经完成了多少次。 您可以声明和初始化这里用逗号分隔的同一类型的几个变量。在init_condition 中定义的所有变量都是循环本地的,循环结束后不会存在。 control_condition是一个逻辑表达式,其值为true或false。 这决定循环是否应该继续执行。 只要这个条件的值为true,循环就会继续。 它通常检查循环控制变量的值。 control_condition在循环开始时进行测试,而不是结束。 如果control_condition开始为false,则loop_statement将不会被执行。 action_per_iteration在每个循环迭代结束时执行。通常是一个或多个循环控制变量的递增或递减。 在每次循环迭代时,执行loop_statement。 循环被终止,并且一旦control_condition为false,就继续执行next_statement。 以下代码显示如何将来自1的整数与用户指定的数字相加。 #include <stdio.h> int main(void) { unsigned long long sum = 0LL; // Stores the sum of the integers unsigned int count = 0; // The number of integers to be summed // Read the number of integers to be summed printf("\nEnter the number of integers you want to sum: "); scanf(" %u", &count); // Sum integers from 1 to count for(unsigned int i = 1 ; i <= count ; ++i) sum += i; printf("\nTotal of the first %u numbers is %llu\n", count, sum); return 0; } 我们不需要在for循环语句中放置任何参数。最小的循环看起来像这样: for( ;; ){...
学习C – C switch switch..case可以声明如下: switch(option){ case option1: // do option1 job break; case option2: // do option2 job break; } switch语句使您能够根据整数表达式的结果从一个操作列表中选择一个操作。 switch语句的一般语法如下: switch(integer_expression) { case constant_value_1: statements_1; break; .... case constant_value_n: statements_n; break; default: statements; break; } 如果integer_expression对应于由关联的constant_value_n值定义的一个case值,那么执行该case值之后的语句。 如果integer_expression的值与每个case值不同,则默认执行的语句将被执行。 您可以省略默认关键字及其关联的语句。 例子 以下是switch..case用法的示例代码: #include <stdio.h> int main() { // you can obtain input value from keyboard // or any input device int input = 3; switch(input){ case 1: printf("choosen 1\n"); break; case 2: printf("choosen 2\n"); break; case 3: case 4 : printf("choosen 3\n"); break; } return 0; } 上面的代码生成以下结果。 例2 例子 #include <stdio.h> int main(void) { int choice = 0; // The number chosen // Get the choice input printf("Pick a number between 1 and 10! "); scanf("%d", &choice); //...
学习C – C If if语句的一般形式或语法是: if(expression) Statement1; Next_statement; 请注意,第一行末尾没有分号。 第二行可以直接写在第一行之后,如下所示: if(expression) Statement1; 括号中的表达式可以是导致值为true或false的任何表达式。 如果表达式为true,则执行Statement1,之后程序继续使用Next_statement。 如果表达式为false,则会跳过Statement1,并使用Next_statement立即继续执行。 因为if语句的控制表达式预期会产生一个布尔结果,所以编译器将安排将产生数值结果的if表达式的结果转换为bool类型。 这里有一个语句说明了这一点: if(count) printf("The value of count is not zero.\n"); 如果count不为0,则只会产生输出,因为count的值为0将导致if表达式的值为false。 count的任何非零值将导致表达式为true。 以下代码显示了if语句的简单示例 #include <stdio.h> int main(void) { int number = 0; printf("\nEnter an integer between 1 and 10: "); scanf("%d",&number); if(number > 5) printf("You entered %d which is greater than 5\n", number); if(number < 6) printf("You entered %d which is less than 6\n", number); return 0; } 上面的代码生成以下结果。 if else if..then的语法模型可以表示如下: if (conditional) { // do something }else{ // do another job } 可以通过逻辑或/和比较操作获得条件。 if-else语句的语法如下: if(expression) Statement1; else Statement2; Next_statement; 在这里,你有一种或两种情况。您将始终执行Statement1或Statement2,具体取决于表达式是否导致值为true或false。 如果expression为true,则执行Statement1,并继续执行Next_statement。 如果expression为false,则执行else关键字后面的Statement2,并继续执行Next_statement。 #include <stdio.h> int main(void) { const double PRICE = 3.50; // Unit price in dollars int quantity = 0; printf("Enter the...