/* 1.变量的内存地址
使用取地址运算符&取出变量的地址
%p表示输出变量的地址
地址值是用一个十六进制的无符号整数表示的,其字长一般与主机的字长相同
*/
#include<stdio.h>
int main()
{
int a=0,b=1,d=2,f=3;
char c='A',g='B',h='C',i='F',j='G',l='D',m='M';
printf("a is %d,&a is %p\n",a,&a);
printf("b is %d,&b is %p\n",b,&b);
printf("d is %d,&d is %p\n",d,&d);
printf("f is %d,&f is %p\n",f,&f);
printf("c is %d,&c is %p\n",c,&c);
printf("g is %d,&g is %p\n",g,&g);
printf("h is %d,&h is %p\n",h,&h);
printf("i is %d,&i is %p\n",i,&i);
printf("j is %d,&j is %p\n",j,&j);
printf("l is %d,&l is %p\n",l,&l);
printf("m is %d,&m is %p\n",m,&m);
}
/* 2.指针变量的定义和初始化
使用指针变量显示变量的地址值
*/
#include<stdio.h>
int main()
{
int a=0,b=1;
char c='A';
/*定义了指针变量,需要初始化,否则未被初始化的指针变量的值是一个随机值
int *pa,*pb; //定义了可以指向整型数据的指针变量pa和pb
char *pc; //定义了可以指向字符型数据的指针变量pc
*/
int *pa=NULL,*pb=NULL; //定义指针变量并初始化为NULL
char *pc=NULL; //定义指针变量并初始化为NULL
printf("a is %d,&a is %p,pa is %p\n",a,&a,pa);
printf("b is %d,&b is %p,pb is %p\n",b,&b,pb);
printf("c is %d,&c is %p,pc is %p\n",c,&c,pc);
return 0;
}
/* 2.指针变量的定义和初始化
使用指针变量显示变量的地址值
指针变量只能指向同一基类型的变量
*/
#include<stdio.h>
int main()
{
int a=0,b=1;
char c='A';
/*定义了指针变量,需要初始化,否则未被初始化的指针变量的值是一个随机值
int *pa,*pb; //定义了可以指向整型数据的指针变量pa和pb
char *pc; //定义了可以指向字符型数据的指针变量pc
*/
/*
int *pa=NULL,*pb=NULL; //定义指针变量并初始化为NULL
char *pc=NULL; //定义指针变量并初始化为NULL
*/
int *pa,*pb;
char *pc;
pa=&a; //初始化指针变量pa,使其指向a
pb=&b; //初始化指针变量pb,使其指向b
pc=&c; //初始化指针变量pc,使其指向c
printf("a is %d,&a is %p,pa is %p\n",a,&a,pa);
printf("b is %d,&b is %p,pb is %p\n",b,&b,pb);
printf("c is %d,&c is %p,pc is %p\n",c,&c,pc);
printf("*pa is %d",*pa);
return 0;
}
/* 3.间接寻址运算符(解引用运算符)
间接寻址运算符 * 用来访问指针变量指向的变量的值
*/
#include<stdio.h>
int main()
{
int a=0,b=1;
char c='A';
//对指针变量进行初始化
int *pa=&a,*pb=&b;
char *pc=&c;
*pa=10; //修改指针变量pa所指向的变量的值
printf("a is %d,&a is %p,pa is %p,*pa is %d\n",a,&a,pa,*pa);
printf("b is %d,&b is %p,pb is %p,*pb is %d\n",b,&b,pb,*pb);
printf("c is %d,&c is %p,pc is %p,*pc is %c\n",c,&c,pc,*pc);
return 0;
}