鱼C论坛

 找回密码
 立即注册
查看: 5831|回复: 2

c语言问题!!其中(PRO*)&tmp是什么意思啊??具体各符号既意义

[复制链接]
发表于 2012-3-24 23:18:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 100
typedef struct
{
  char dm[5];  /* 产品代码 */
  char mc[11]; /* 产品名称 */
  int dj;      /* 单价 */
  int sl;      /* 数量 */
  long je;     /* 金额 */
} PRO;  
PRO sell[MAX];  
void ReadDat();
void WriteDat();
void SortDat()
{
  int i, j, len;
  PRO tmp;
  len = sizeof(tmp);  
  memset((PRO *) & tmp, 0, len);  
  for(i = 0; i < 100; i++)
    for(j = i + 1; j < 100; j++)
        {
      if(strcmp(sell[i].dm, sell[j].dm) < 0 || (sell[i].je < sell[j].je && strcmp(sell[i].dm, sell[j].dm) == 0))
          {
        memcpy((PRO *) & tmp, (PRO *) & sell[i], len);  
        memcpy((PRO *) & sell[i], (PRO *) & sell[j], len);  
        memcpy((PRO *) & sell[j], (PRO *) & tmp, len);  
          }
        }
}
void main()
{
  memset(sell, 0, sizeof(sell));

  ReadDat();
  SortDat();
  WriteDat();
}
void ReadDat()
{
  FILE *fp;
  char str[80], ch[11];
  int i;
  fp = fopen("in.dat", "r");
  for(i = 0; i < 100; i++)
  {
    fgets(str, 80, fp);  
    memcpy(sell[i].dm, str, 4);

    memcpy(sell[i].mc, str + 4, 10);  
memcpy(ch, str + 14, 4);
ch[4] = 0;  
sell[i].dj = atoi(ch);  
memcpy(ch, str + 18, 5);
ch[5] = 0;   
sell[i].sl = atoi(ch);   
    sell[i].je = (long)sell[i].dj * sell[i].sl;  
  }
  fclose(fp);
}
void WriteDat()
{
  FILE *fp;
  int i;
  fp = fopen("out.dat", "w");
  for(i = 0; i < 100; i++)
  {
    fprintf(fp, "%s %s %4d %5d %10ld\n", sell[i].dm, sell[i].mc, sell[i].dj, sell[i].sl, sell[i].je);
  }
  fclose(fp);
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-3-25 12:47:27 | 显示全部楼层
PRO tmp;
说明tmp是个结构体PRO类型的变量
&tmp就是tmp的地址,其类型是PRO*类型的。
(PRO*)&tmp就是把&tmp强制转换为PRO*类型

写这个代码的人根本就没搞清楚这个程序到底在干什么
&tmp已经是PRO*类型的 ,再强制转换下干什么?要转转成void*类型的也还可以理解
就是:(void*)&tmp。因为memset函数第一个参数类型是void*类型的

其实根本不转换就可以,因为任何指针类型都能够隐式转换为void*类型

总之,整个程序中(PRO*)&tmp处可以用&tmp来替代。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-3-25 13:50:57 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-14 17:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表