C语言菜鸟教程数组指针,C 指针

/*按照偏移值访问函数形参内容实验*/

//二级指针

void Pros(char* a,int b,int e,char et)

{

char **p=&a;

//a==*p

printf("%p %p %p %p \n%p\n",&a,p,a,*p,&b);

printf("%s\n",*p);

p++;

printf("%d\n",*p);

p++;

printf("%d\n",*p);

p++;

printf("%c\n",*p);

return;

}

//一级指针访问

void Test(char* a,int b)

{

char *p=(char*)&a;

//a!=*p;

//printf("%p %p %p %p\n",&a,p,a,*p);

//printf("%p\n",&b);

//得出结果一级指针自加+1 二级指针自按照元素内容大小自加

//printf("%d %p\n",*(++p),p);

//printf("%d %p\n",*(p+8),p+8);

//a=a[0]一个printf函数以'\0'结束

//此时p=&a把元素首地址给了p或者说a只记录一个元素首地址的地址

//同等汇编语句 a:db 'Hello' b:db '16'

//所以 p=&a != p=a ;

/*

char *a="Hello";

char *b=(char*)&a;

printf("%p %p %p %p",&a,b,a,&(a[0]));

*/

//printf("%c %p %p\n",*a,a,&(a[0]));

//printf("%c %p %p\n",*(a+1),a+1,&(a[1]));

printf("%c\n",*(*(char**)p));

//if p=a; *p=a;

p=a;

printf("%s",p);

return;

}

int main()

{

//Pros("Hello",5,66666,'a');

Test("Hello",16);

//指针转换问题

/*

char *a="Hello";//&a变量里面存储着a所指向的变量地址

//char **p=&a;

char *b=(char*)&a;

char **p=&a;

printf("%p %p %p %p\n",&a,b,a,*b);

printf("%p %c\n",&(*a),*(&(*(a+1))));

printf("%p %c\n",a,*a);//此时a->H,*a=H;

printf("%p %c\n",(*p),*(*p));

//p=&a,*p=a所指向的第一个元素的地址还需要一解才能访问正确数据

//所以1级指针需要解2次 所以进行强制转换

printf("%c \n",*(*(char**)b));

//原试解 现在b=&a,*b= &a->a所以如果此时想正确访问H必须在解

*/

return 1;

}

HBR1

HBR1

238***9419@qq.com4年前 (2017-05-01)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值