一.错题总结
1.函数的返回值类型是由(在定义函数时所指定的函数返回类型)决定的。
2.如果调用一个整形函数,且此函数没有return语句,那么它将(返回一个不确定的值)。
3.实参可以是常量,变量,表达式,而形参需要与其对应的实参类型一致。
4.函数的定义不可以嵌套,但是函数的调用可以嵌套。
5.若以定义定义的函数有返回值,那么函数调用可以作为一个函数的实参,函数调用可以出现在表达式中,函数可以作为独立的语句存在。
6.函数发生调用时,实参与其对应的形参各自占用独立的空间。
7.一个函数返回值由被调函数类型确定。
8.
#include <stdio.h>
void func(int , int b);
int main(){
int x,y;
x=10;
y=20;
func(x,y);
printf("%d %d",x,y) ;
return 0;
}
void func(int a, int b){
int temp=a;
a=b;
b=temp;
}
//输出结果10,20.因为a,b的交换值只在子函数里面实现了,调到主函数之后又释放了
9.10.11题目类似
#include <stdio.h>
#define MIN(x,y) (x)>(y)?(x):(y)
//void func(int , int b);
int main(){
int i=10,j=15,k;
k = 10*MIN(i,j);
printf("%d",k);
return 0;
}
/*这个程序的运行结果是10,
它是机器,机器有机器的算法,不能像人一样计算,计算顺序是
10*MIN(i,j) (i)>(j)?(i):(j)
10*(i)>(j)?(i):(j)
10*10>15?10:15
100>15,所以输出i*/
12.#define POWER(x) ((x)*(x)),任何情况下计算平方数都不会引起二义性的宏定义,括号越多越安全
13.宏定义
在程序中凡是以#开始的语句都是预处理命令,预处理命令可以出现在c程序的任意一行中。
宏替换不不占用运行时间,只占用编译时间
宏名 无类型,宏替换只是字符替换,宏替换不占用运行时间
#define N 100; 主要是在编译程序对C源程序进行预处理是用100替换了标识符N。
二.知识点总结
指针函数
使用指针数组打印字符串
数组指针
定义一个数组指针,然后输出其中的内容,这里面可以通过指针引用法和下标法输出数组里面的元素
calloc(),malloc(),realloc()来动态分布内存,
#include <Stdio.h>
int main(){
int *p=NULL;
int i;
p = malloc(sizeof(int)*10);
//开辟空间后不初始化
printf("开辟空间后不初始化:\n");
for(i=0;i<10;i++){
printf("p指向的第%d的空间内容是%的\n",i,*(p+i));
}
//开辟空间后初始化,并且打印结果
for(i=0;i<10;i++){
*(p+i)=i+10;
printf("%d \n",*(p+i));
}
//改变p指向空间的第三个内容(0开始)
*(p+3)=133;
for(i=0;i<10;i++){
printf("%d \n",*(p+i));
}
//释放空间后打印
free(p);
printf("%d\n",*(p+i));
for(i=0;i<10;i++){
printf("%d \n",*(p+i));
}
return 0;
}