第七天
1. c语言基础之访问变量的方式
- 1.1直接访问
直接访问变量 printf(“%d”,a);
- 1.2间接访问
使用地址访问变量 ,用 * 号取地址对应的变量的值。int *p; p= &a; printf(“%d”,*p);
2.c语言基础之存放地址的变量----指针变量
- 2.1 注意类型的匹配
类型 *指针变量名 此类型要与存放的变量的相同。
- 2.2 赋值方法
int *p = &a;
int *p; p= &a;
* 号 的两种用法 : 1.用来指示变量是指针变量。2.是个运算符,将地址指向的变量的值取出来;
3.c语言基础之指针指向数组
- 3.1 指针 加法
类型 *p = &a; p = p + 1; 指针代码上+1,实际上内存移动的是类型的大小,比如 类型是 double ,地址就变了8;是int就变了4;很多情况下,数组名就是一个指针变量,但是在sizeof情况下不是。
4.c语言基础之野指针
- 4.1 野指针会随机的指向内存中某个区域,所以编译时不允许有野指针,当有野指针时会段错误。
- 4.2 所以一般来说定义指针时使用malloc给指针分配内存。malloc动态申请空间可能会失败,失败返回NULL
5.指针的小demo
#include <stdio.h>
int findMax(int *parray,int len){
int max;
int i;
max = *parray;
for(i=0;i<len;i++){
if(max < *parray){
max = *parray;
}
parray++;
}
return max;
}
int findMin(int *parray,int len){
int min;
int i;
min = *parray;
for(i=0;i<len;i++){
if(min > *parray){
min = *parray;
}
parray++;
}
return min;
}
float findAvg(int *parray,int len){
float avg;
int sum=0;
int i;
for(i=0;i<len;i++){
sum += *parray;
parray++;
}
avg = (float)sum / len;
return avg;
}
void func(int *pmax,int *pmin,float *avg,int *parray,int len){
int i = 0;
int sum = 0;
*pmax = *parray;
*pmin = *parray;
for(i = 0;i<len;i++){
if(*pmax < *parray){
*pmax = *parray;
}
if(*pmin > *parray){
*pmin = *parray;
}
sum += *parray;
parray++;
}
*avg = (float)sum/len;
}
int main(){
int array[5]={20,55,61,52,30};
int len = sizeof(array)/sizeof(int);
int max,min;
float avg;
func(&max,&min,&avg,array,len);
printf("max = %d\n",findMax(array,len));
printf("min = %d\n",findMin(array,len));
printf("avg = %f\n",findAvg(array,len));
printf("===================\n");
printf("max=%d,min=%d,avg=%f\n",max,min,avg);
return 0;
}