C语言指针变量的赋值和做函数的参数

Python012

C语言指针变量的赋值和做函数的参数,第1张

1、指针变量赋值,分为定义时赋值(初始化)和单独赋值,如:

int x

int * px=&x //定义时赋值,也称初始化,注意这里的*是跟随int的,即变量px是int *类型变量! 实际上的赋值语句是px=&x

int * py

py=&x //单独赋值,将py指向x

*py=10 //这里的*,是引用指针中的数据操作符,*跟随的变量必须是指针类型变量,否则会出错! *py就是x,这里相当于x=10

2、指针变量作为函数的参数时,子函数可以通过指针引用实参地址中的数据,达到修改实参地址中的数据。如:

#include <stdio.h>

void func( int a, int b, int *pmax )

{

if ( a>b ) *pmax=a

else *pmax=b

}

void main()

{

int a=2,b=3,max=0

func(a,b,&max )//这里将变量max的地址传递到子函数,子函数中通过该地址,可以修改max的值,达到子函数结束后,max能带回运算结果的效果。

printf("max=%d\n", max )

}

将数组传递给函数后,数组就会退化为指针

void fun(int x, int pp[], int *n)

void fun(int x, int *pp, int *n)

// 这两种写法是等价的

pp[j++]=j // 这句写错了

// 要保存到pp里的是能整除的整数,而不是计数器j,如果这么写,那么pp的值肯定是{0,1,2,3,4,5,...}

// 应该改成

pp[j++] = l // L才是被整除的整数,要保存的是这个

*n=j // n作为一个指针,负责传出得到的数字的数量,j是计数器,当所有的计算完毕后,j的值自然是这些数字的数量