1.合法的指针运算包括:
a.相同类型指针之间的赋值;
b.指针之间或指针与整型之间的加法或减法运算;
c.加或比较两个指向相同数组元素的指针;
d.指针与0之间的赋值或比较运算。
e.注意void *通用类型指针,可以不通过转换相互赋值。
2.注意的是:
一个指针=它的值(它所指向的变量的地址)+它本身在内存中的地址构成;
调用函数时,当要修改一个指针的值(此指针指向的变量的地址)时,一定要调用这个指针的地址。
否则修改无效。
函数调用传值,不会修改:
#include <stdio.h>
#include <stdlib.h>
void swap(int *c, int *d){
int *temp;
temp = c;
c = d;
d = temp;
printf("已调用函数,在函数%s()中:Add of C=%X,Add of D=%X\n",__func__, &c, &d);
printf("已调用函数,在函数%s()中:Val of C=%X,Add of D=%X\n", __func__,*c, *d);
}
int main()
{
int *p = (int *)malloc(sizeof(int));
*p = 100;//只是让地址中存储的东西不一样
int *c = p;//此时指针中的值为0,也就是没有指向任何对象;
int *q = (int *)malloc(sizeof(int));
*q = 200;//只是让地址中存储的东西不一样