【无标题】

#include <stdio.h>
int main(){
//    int a=100;
//    int *p;
获取a的内容
//    printf("%d\n",a); 
获取a的内容
//    p=&a;
//    printf("%d\n",*p);
获取a的地址 
//
//    printf("%#p\n",p);
获取a的地址 
//    int *p=&a;
//    printf("%*p\n",p);

    
    
//    int a[10] = {1,2,3,4,23,5};
//    int *p;
相当于指向a数组的首地址 
//    p=&a[0];
//    printf("取a[0]地址%p\n",&a[0]);
获取首地址 
//    printf("%p\n",p);
获取第二个元素首地址 
//    printf("%p\n",p+1);
也可以获取数组a首地址 
//    p=a;
//    printf("%p",p);
/*    
//    *p++:等同于:*p;  p += 1;
//  *p++ == *(p++) 
//    运算后p在加1,而不是p所指向变量*p在加1 
//  *++p:等同于 p += 1;    *p;
由于++在p的前面,++前置的含义是,先加1,得到一个新的p(它的值是原来p的值加1)。然后这个新的p再与前面的*结合.

无论是*p++还是*++p,都是指针p += 1,即p的值+1,而不是p所指向的变量*p的值+1。

++前置与++后置,只是决定了到底是先p += 1,还是先*p。++前置表示先p += 1,再*p。++后置表示先*p,在p += 1;

--前置与--后置的的分析方法++前置与++后置的一样。

 (*p)++,使用()强制将*与p结合,只能先计算*p,然后对*p整体的值++。

 ++(*p),先*p取值,再前置++,[该值+1后]作为整个表达式的值
*/
    
//指针的数组
//    []优先级高于*,所以他先是一个数组。然后 *修饰数组,所以是指针数组 
//    char *str[3];
//    str[0] = "abc";
//    str[1] = "zxc";
//    str[2] = "asd";
//    for(int i=0;i<3;i++){
//        printf("%s\n",str[i]);
//    }
//数组的指针 
//括号优先级高,所以*p是指针,[]用来修饰*p;所以时数组指针,例如一个指向3个元素的一维数组 
//    int a[] = {1,2,3};
//    int (*p)[3] = &a;
//    for(int i=0;i<3;i++){
//        printf("%d\n",(*p)[i]);
//    }
    

    return 0;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值