赞
踩
C中星号’*'的作用就下几种用法:
1.声明指针
2.取指针的值
3.乘法运算符
4.字符
5.注释
char str[]="hello";
char* p=str;
char** p1=&p;
定义str字符数组,char型 指针p,char *型指针p1;
//输出str 和 p的地址
printf("%x\n",str);
printf("%x\n",&p);
printf("%x\n",*p);
printf("%x\n",*p1);
结果:
可以看出*p作用就是:
嗯,听起来有点拗口
从图理解:
*p就是取p的值0x22fe50,再把0x22fe50作为地址,取地址0x22fe50的值,就是0x68(字符’h’的ascall码)
*p1就是取p1的值0x22fe48,再把0x22fe48作为地址,取地址0x22fe48的值,就是0x22fe50
嗯,就这个作用嘛,很简单嘛
对,继续
printf("%x\n",*(short* )p);
printf("%x\n",*(int* )p);
结果:
这个也很简单嘛~
对,还有~
struct ss
{
char name[5];
int age;
char sex;
}std,*p=&std;
std.age=10;
printf("\n%d",*p);
printf("\n%d",(*p).age);
printf("\n%d",std);
printf("\n%d",std.age);
结果:
发现完全等价,得出*p作用就是:
嗯,那么我想输入,std成员age的值
其实也可以这样
scanf("%d",&(*p).age);
还不理解可以看下这张图片
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。