指针小解

指针真的是很难对付的一个姑娘,事太多,又太绕。想起来师傅当时说的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)永远不要使用未初始化的指针变量;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值