C语言——函数
- 声明函数
- 使用函数
- 定义函数
无参函数
#include<stdio.h>
void main()
{
void printstar(); //声明函数
printstar(); //使用函数
}
void printstar()
{
printf("**************\n");
}
有参函数,单项传递,实参传递给形参
#include<stdio.h>
void main()
{
int max(int x,int y);
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b); //a,b实参
printf("Max is %d\n",c);
}
int max(int x,int y) //x,y形参
{
int z;
z=x > y ? x : y;
return z;
}
C语言——指针
内存有两个属性:地址和地址上存放的
对变量访问:直接访问,间接访问
- 间接访问:scanf(“%d”,&a);
初识指针
指针变量里面存储一个地址
*取值操作符
&取址操作符
int i=2000;
int* pointer; //pointer是一个指向整形的指针变量
pointer=&i;
printf("%d\n",*pointer);
指针和指针变量
指针是地址是一个值
指针变量是用来存放变量地址的,是一个变量
指针和数组的区别
指针是一个左值,而数组名是一个地址常量
数组名是数字第一个元素的地址,是不变的
数组指针
数组指针是一个指针,它指向的是一个数组,数组连续需分配空间
int a[20];
int *p;
p=&a[0]; //p是数组a第一个元素的地址
引用数组元素
-
下表法:a[i]
-
指针法:*(a+i),*(p+i)
-
数组名即翻译成数组元素第一个元素的地址
p=a == p=&a[0]
-
三种方法输出数组
-
下标法
int a[10]; for(i=0;i<10;i++) printf("%d",a[i]);
-
数组名计算数组元素地址
int a[10]; for(i=0;i<10;i++) printf("%d",*(a+i));
-
指针法
int a[10]; int *p; p=a; for(i=0;i<10;i++) printf("%d",*(p+i));
数组名做函数参数
f(int arr[],int n)
f(int *arr,int n)
这两个是相互等价的,编译时是将arr按照指针变量处理的