11.18
收获
1.
指针也有int ,char,float等类型;
定义时必须指定
int *p;
p代表这个地址,
*是取值符
*p代表在p这个地址储存的值
2.
指针变量作为函数参数
#include<stdio.h>
#include<stdlib.h>
int swap(int *p1, int *p2);
int main()
{
int *pointer_1, *pointer_2;
int a, b;
scanf_s("%d%d", &a, &b);
pointer_1 = &a;
pointer_2 = &b;
if(a<b)
swap(pointer_1, pointer_2);//交换
printf("%d > %d", a, b);
system("pause");
}
int swap(int *p1,int *p2)
{
printf("please waiting...\n");
int temp;
temp = * p1;
*p1 = * p2;
*p2 = temp;
}
3.
int *p;
int a[10];
p=a;等价于p=&a[0];
*p=a[0];
11.19
1.
两个指针变量可以相减:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[10] = { 1,2,3,4,5,6,7,8,9,0 };
int *p1, *p2;
int p;
p1 = &a[3];
p2 = &a[6];
p = *p1 - *p2;
printf("%d\n", p);
system("pause");
}
p = p1 - p2; 或者p = * p1 - * p2;
输出的p为 a[6] - a[3] 的值。
2.
指正运算:
p++, p–, p+i, p-i, p+=i; p-=i;等均是指针变量加(减一个整数)。
将该指针变量的原值(是一个地址)和它指向的变量所占用的储存单元的字节数相加(减)。
11.21
两个指针变量的比较
若两个指针指向同一个数组的元素,则可以进行比较。指向前面的元素的指针变量“小于”指向后面元素的指针变量。
指针变量可以有空值
例如:
#define NULL 0
int *p;
p=NULL;