您的位置:首页 > 编程语言 > C语言/C++

指针小解

2016-07-13 17:31 302 查看
指针真的是很难对付的一个姑娘,事太多,又太绕。想起来师傅当时说的C语言学不好指针就等于白学了,觉得还是蛮有道理的。
1.


int   *pa
// pa是一个指针变量,它指的是一个整形变量;同理扩展。


2.

int a=0,b=1;
int *pa,*pb; //指针并没有指向任何一个整型和字符型,所以理解成赋值为NULL(在stido.h中定义的零值的宏)
printf("a is %d,&a is %p,pa is %p\n",a,&a);
printf("b is %d,&b is %p,pb is %p\n",b,&b);
运行结果:pa is 000000

3.


int a=0,b=1;
char c='A';
int *pa,*pb;
char *pc;
pa=&a;
pb=&b;
pc=&c;
printf("a is %d,&a is %p,pa is %p,&pa is %p\n",a,&a,pa,&pa);
printf("b is %d,&b is %p,pb is %p,&pb is %p\n",b,&b,pb,&pb);
printf("c is %c,&c is %p,pc is %p,&pc is %p\n",c,&c,pc,&pc);
return 0;
//指向某变量的指针变量,虽然指针变量中存放的是变量的地址,二者在数值上相等,但是在概念上变量的指针并不等同于变量的地址。


4.


指向某变量的指针变量,通常简称为某变量的指针,虽然指针变量中存放的是变量的地址值,二者在数值上相等,但在概念上变量的指针并不等同于变量的地址。变量的地址是一个常量,不能对其进行赋值。而变量的指针则是一个变量,其值是可变的。


5.
间接寻址运算符:
int a=0,b=1;
char c='A';
int *pa=&a,*pb=&b;
char *pc=&c;
*pa=9;    //修改指针变量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 %c,&c is %p,pc is %p,*pc is %c\n",c,&c,pc,*pc);
// *作为间接引用运算符,用于读取并显示指针变量中存储的内存地址所对应的变量的值,即指针变量所指向的变量的值,这两个用法之间其实并无关系。
6.
(1)永远清楚每个指针指向了哪里,指针必须指向一块有意义的内存;
(2)永远清楚每一个指针指向的对象的内容是什么;
(3)永远不要使用未初始化的指针变量;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言