地址和指针
定义指针变量的一般形式:
类型名 *指针变量名1, *指针变量名2,…;
“&”是求地址运算符
给指针变量赋地址值:
int k = 1,*q,*p;
q = &k;
把变量k的地址赋予q
也可给指针变量赋“空”值例:p = NULL;
“ * “是间接访问运算符,
移动指针
增1表示指针向地址值大(高地址)的方向移动一个存储单元
减1表示指针向地址值小(低地址)的方向移动一个存储单元
移动指针,只需加、减一个整数。
函数之间地址值的传递
若函数的形参为指针类型,调用该函数时,对应的实参必须是基类型相同的地址值或者是已指向某个存储单元的指针变量
#include <stdio.h>
int myadd(int *a, int *b)
{
int sum;
sum = *a + *b;
return sum;
}
int main()
{
int x, y, z;
printf("Enter x, y :");
scanf("%d%d", &x, &y);
z = myadd(&x,&y);
printf("%d+%d=%d\n", x, y, z);
return 0;
}
通过传送地址值可以在被调用函数中直接改变调用函数中的变量的值。
函数值的类型不仅可以是简单的数据类型,而且可以是指针类型。
数组
一维数组一般形式
类型名 数组名[整型常量表达式],…;
引用形式:
数组名{下标表达式};
不可以给数组名重新赋值,但可以用数组名加一个整数的办法来依次表达该数组中不同元素的地址如a是a数组的首地址,a+1的值等于&a[1]
二维数组一般形式
类型名 数组名[常量表达式1][常量表达式2],…;
二维数组引用:
数组名[下标表达式1][下标表达式2]