It's our wits that make us men.

2019/7/16 C语言————函数和指针

Posted on By LuLu

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第一个元素的地址

引用数组元素

  1. 下表法:a[i]

  2. 指针法:*(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按照指针变量处理的