1.在printf()和scanf()语句中,像%d这样的适合于int的格式,用于long可能会引起意外的结果。应当对long使用%ld。使用转换符d前的修饰符l代表long.类似地,当用short时,应该使用%hd,转换符前的修饰符h代表short。
2.程序员在printf()中可以使用%f输出float或double。然而,在scanf()中必须用格式%f输入float,用格式%lf输入double。
3.当把表达式作为参数传递函数时,要复制表达式的值,把复制的值传递给函数,而不是用表达式本身进行传递,这种机制被称为按值调用,在C中,这是严格的规定。假设V时变量,F()时函数,如果V=F(V),那么函数的返回值能改变调用环境中的V。除此之外,函数调用F(V)本身不能改变V,这是因为仅把V的值拷贝传递给了F()。然而在其他的编程语言中,函数调用本身也能改变调用环境中V的值,把这样的机制称为引用调用。
4.在C中要实现引用调用,就要使用指针作为函数的形式参数,在主函数中要使用地址作为函数引用的实际参数,这个要注意。例如:
#include<stdio.h>
void swap(int *,int *);//函数声明
void main(){
int a=2,b=3;
printf("a=%d,b=%d",a,b);
swap(&a,&b);
printf("a=%d,b=%d",a,b);
}
/*定义交换函数*/
void swap(int *p,int *q){
int temp;//定义临时变量
temp=*p;
*p=*q;
*q=temp;
}
5.引用调用的步骤:
(1).把函数参数声明为指针类型;
(2).在函数体内使用间接访问指针;
(3).在调用函数时,使用地址作为参数进行传递。
6.使用return的函数能想调用环境传回一个值。如果调用环境需要多个回传的值,必须把地址作为参数传给函数。
2.程序员在printf()中可以使用%f输出float或double。然而,在scanf()中必须用格式%f输入float,用格式%lf输入double。
3.当把表达式作为参数传递函数时,要复制表达式的值,把复制的值传递给函数,而不是用表达式本身进行传递,这种机制被称为按值调用,在C中,这是严格的规定。假设V时变量,F()时函数,如果V=F(V),那么函数的返回值能改变调用环境中的V。除此之外,函数调用F(V)本身不能改变V,这是因为仅把V的值拷贝传递给了F()。然而在其他的编程语言中,函数调用本身也能改变调用环境中V的值,把这样的机制称为引用调用。
4.在C中要实现引用调用,就要使用指针作为函数的形式参数,在主函数中要使用地址作为函数引用的实际参数,这个要注意。例如:
#include<stdio.h>
void swap(int *,int *);//函数声明
void main(){
int a=2,b=3;
printf("a=%d,b=%d",a,b);
swap(&a,&b);
printf("a=%d,b=%d",a,b);
}
/*定义交换函数*/
void swap(int *p,int *q){
int temp;//定义临时变量
temp=*p;
*p=*q;
*q=temp;
}
5.引用调用的步骤:
(1).把函数参数声明为指针类型;
(2).在函数体内使用间接访问指针;
(3).在调用函数时,使用地址作为参数进行传递。
6.使用return的函数能想调用环境传回一个值。如果调用环境需要多个回传的值,必须把地址作为参数传给函数。