初始换赋值
存储类型 数据类型*指针变量名 = 初始化地址
例:
int i;
int*p=&i; p就是i的地址
int I;
int*p=&i;
int*q=p; p也可以等于q作为地址
//内存地址...内存中存储的编号 #include <stdio.h> int main(int argc, const char * argv[]) { // 指针的声明 int *p1;//声明了一个指向整型空间的指针变量 *号位置不作严格要求 int* p; float *p2;// 声明一个指向实型空间的指针变量 char *p3;//声明了一个指向字符型空间的指针变量 int a=12; float b=3.14; char c='m'; // 指针的赋值 p1 = &a;//指针平指向了整型空间a p2=&b;//指针平指向了实型型空间b p3=&c;//指针平指向了字符型空间c
printf("%d\n",*p1);// *p1 表示取指针p1指向的空间的值=12
int array[5]={1,2,3,4,5};//数组名array表示数组的首地址(第一个元素的地址) // printf("%p\n",array); // printf("%p\n",&array[0]); // printf("%p\n",&array[1]); //数组间占据字符4 // // int* p4; // p4=array;//完全成立,可以赋值 // // char name[3]={'i','o','s'};//字符数组 // char name0[4]={'i','o','s','\0'};//字符串\0 // for (int i=0; i<5; i++) { *(array+i)=i+100;//指针和i进行相加运算时,表示指针向后挪,指向下一内存单元 } for (int i=0; i<5;i++ ) { printf("%d ",array[i]);
}
、、、、、、、、、、、、、、、、、、、、、
void exChange(int a,int b) { int *p1; p1=&a; *p1=b;//把a的地址p1指向b,b的值赋给a的地址代表的数,a没了
printf("%d %d",a,b);
********************************
void exChange(int *a,int *b) { int c; //c是中间量,用来存放*a的值,再赋给*b的值 c=*a; *a=*b; //赋值的顺序不能变 *b=c; //把a的地址p1指向b,b的值赋给a的地址代表的数,a没了 } int main(int argc, const char * argv[]) { int a=33,b=44; exChange(&a, &b);//函数的调用过程中,如果传递的参数只是普通的(非指针)变量值,只是相当于拷贝了一份数据给函数的参数,对当期函数里面的变量值,没有任何影响 printf("%d %d",a,b);