指针:就是地址
&变量名:获得该变量的地址。&称为取地址符
*指针变量:访问指针变量指向的内容,间接访问符或者解引用
指针变量:1.也是变量,值可以改变。2.也可以获取他的地址
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
int* p = &a;//定义一个整型指针(地址)变量
int* p1//1,定义整型地址(指针)变量
*p = 100;
p = &b;
*p = 200;
int a = 10;
int b = 20;
int c = 30;
//定义指针变量p1,保存a的地址
int* p1 = &a;
//定义指针变量p2,保存b的地址
int* p2 = &b;
//定义指针变量p3,保存c的地址
int* p3 = &c;
//通过p1,把a的值改为50,并通过p1输出a的值
*p1 = 50; printf("%d\n", *p1);
//通过p1,p2,p3,把c=a+b(不允许出现a,b,c)并通过p1,p2,p3输出a,b,c的值
*p3 = *p1 + *p2; printf("%d%d%d\n", *p1, *p2, *p3);
//通过p1,p2,p3,把c=a*b(不允许出现a,b,c)并通过p1,p2,p3输出a,b,c的值
*p3 = *p1 * *p2;
int a = 10;
int b = 20;
int c = 30;
int* p = &a;
//通过p将a改为60,并通过p输出a的值
*p = 60; printf("%d\n", *p);
//通过p将b改为70,并通过p输出b的值
p = &b;
*p = 70; printf("%d\n", *p);
//通过p将c改为80,并通过p输出c的值
p = &c;
*p = 80;printf("%d\n", *p);
char a = 'x';
short b = 12;
int c = 20;
float d = 12.5f;
double e = 23.4;
unsigned long f = 300;
定义指针p1,指向a,并通过p1输出a的值
定义指针p2,指向b,并通过p2输出b的值
定义指针p3,指向c,并通过p3输出c的值
定义指针p4,指向d,并通过p4输出d的值
定义指针p5,指向e,并通过p5输出e的值
定义指针p6,指向f,并通过p6输出f的值
/*char* p1 = &a; printf("%c\n", *p1);
short* p2 = &b; printf("%d\n", *p2);
int* p3 = &c; printf("%d\n", *p3);
float* p4 = &d; printf("%f\n", *p4);
double* p5 = &e; printf("%lf\n", * p5);
unsigned long* p6 = &f; printf("%u\n", *p6);*/
int a = 10;
int b = 20;
int* p = &a;
*p = 100;
p = &b;
*p = 200;
/*int**pp=&p;*/
int** pp;
pp = &p;
*pp = &a;//*pp等同于p p=&a; **pp==*p==a
**pp = 1000;//a=1000;
*pp = &b;//p=&b;
**pp = 2000;//b=2000;
//指针大小
printf("%d\n", sizeof(char*));//1
printf("%d\n", sizeof(unsigned short*));//2
printf("%d\n", sizeof(int*));//4
printf("%d\n", sizeof(float*));//4
printf("%d\n", sizeof(double*));//8
printf("%d\n", sizeof(long****));//4
printf("%d\n", sizeof(long long*));//8
printf("%d\n", sizeof(1)); //4,int
printf("%d\n", sizeof(1,2));//4,float
int a = 10;
int b = 20;
int temp=a;
a= b;
b = temp;
printf("%d,%d\n", a, b);
return 0;
}
野指针:也称为悬挂指针,就是你没有访问权限的指针(地址),这个地址可能不存在
NULL:空指针,明确表示当前是无效指针
结论:父函数调用子函数,想通过子函数修改父函数的变量值(实参),简单的说就是形参的 改变能够影响实参,必须满足两个条件:1.传指针 2.解引用
int *p定义一个整型指针(地址)变量