高级会员
- 积分
- 600
- 威望
- 316
- 贡献
- 150
- 兑换币
- 193
- 注册时间
- 2013-1-15
- 在线时间
- 67 小时
|
二话不说,上代码:
//**************************************************//
//*任务:结构体成员中的数组的赋值,指向结构体的指针*//
//**************************************************//
//**************************************************//
//*新发现:printf:输出时a++不能正常运算,而++a可以*//
//*正常,输出是从右向左进行的。 *//
//**************************************************//
//**************************************************//
//*作者:吴某 日期:2013.7.8*//
//**************************************************//
#include <stdio.h>
#include <string.h>
#define KEY 0
#if (KEY==0)
struct student
{
int num;
int age;
char name[20];
};
void main()
{
struct student stu[2];
struct student* p;
//总结:指针类型变量的声明不能用“,”隔开
struct student* p2;
int a;
a = sizeof(struct student* );
printf("p只占%d个字节,仅表示地址编号!\n",a);
/*以下三种形式等价 一般情况下用p->,形象方便*/
p = &stu;
p->age = 10;
(*p).num = 1001;
strcpy(stu[0].name,"xiao san");
// p2 = &stu[1];
// p2->age = 15;
// p2->num = 1002;
// strcpy(p2->name,"xiao si");
stu[1].age = 15;
stu[1].num = 1002;
strcpy(stu[1].name,"xiao si");
//总结:结构体成员中的数组的赋值方式如上,以下三种皆错
// stu1.name = "xiao san";
// stu1.name[20] = "xiao san";
// stu1.name[20] = {'x','i','a','o',' ','s','a','n'};
printf("name:%s,age:%d,num:%d\n",p->name,p->age,p->num);
printf("一年后,信息变为:\n");
//主要看此处的++p->age,即,++p->age<==>++(p->age),右边同理;
printf("name:%s,age:%d,num:%d\n",p->name,++p->age,p->num);
printf("小三和小四在一个数组里,指向小三的指针加1,信息变为小四的:\n");
//在printf里a++不能实现,或者a+1后数值不能保存住 而++a 可以实现a=a+1
//printf 里面 输出或者运算是从右向左 如下:
printf("name:%s,age:%d,num:%d\n",p->name,p->num,(++p)->age);
a++;
printf("左:%d中:%d右:%d\n",++a,(++a),(++a));
//下 面 不能实现a=a+1运算
// printf("左:%d中:%d右:%d\n",a++,(a++),(a++));
}
#else if(KEY==1)
#endif
|
|