c语言函数问题

[复制链接]
查看11 | 回复4 | 2011-8-22 09:41:02 | 显示全部楼层 |阅读模式
void fa(void* p){ }
void showbyte(void* p, int size){
        unsigned char* pc = (unsigned char*)p;//这一步是什么意思?
        int i;

        for(i=0; i<size; i++){
                printf("%02X ", *pc);
                pc++;
        }
        printf("\n");
}
int main()
{
        int x = 10;
        int* p = &x;
        void* pv = &x;
        //不能对void*进行*号运算只能void* 取地址啊?
        //printf("%d\n", *pv);
        printf("pv=%p\n", pv);
        pv++;
        printf("pv=%p\n", pv);
        void** ppv = &pv;
        fa(p);
        fa(ppv);
        long double ld = 3.1415926535897932384626;
        showbyte(&ld, sizeof(ld));       
        typedef struct Person{
                int id;
                char name[10];
                int age;
        }Person;
        Person ps[5] = {
                {1,"aa",18},{2,"bb",19},{3,"cc",20},{4,"dd",21},{5,"ee",22} };
        showbyte(ps, sizeof(ps));
        }

回复

使用道具 举报

千问 | 2011-8-22 09:41:02 | 显示全部楼层
unsigned char* pc = (unsigned char*)p;//这一步是什么意思?因为你的形参(void* p, int size)定义的P是指向空类型的指针,而要把这个指针赋给指向无符号字符型的指针变量,就必须利用强制转换符转换成无符号字符型(空类型可以转换为任何类型)unsigned char* pc = (unsigned char*)p;void* pv = &x;//不能对void*进行*号运算只能void* 取地址啊?这个问题和上面一样,你不能把一个指向整型的指针赋给一个空类型的指针变量...
回复

使用道具 举报

千问 | 2011-8-22 09:41:02 | 显示全部楼层
1 把pc指向p2 void*是无类型指针,当然不能*先定义一个aaaint *aaa = (int*) pv;用*aaa...
回复

使用道具 举报

千问 | 2011-8-22 09:41:02 | 显示全部楼层
unsigned char* pc = (unsigned char*)p;//这一步是什么意思?将pc指向p空间//不能对void*进行*号运算只能void* 取地址啊?void*代表一个未知类型空间,...
回复

使用道具 举报

千问 | 2011-8-22 09:41:02 | 显示全部楼层
需要强制转换例如:*((int*)p)...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行