夜礼服 发表于 2015-12-28 13:25:47

函数传指针。。

下面是(利用强制转化类型用十六进制数表示一个象在内存中字节表示情况的程序)
void show_byte(unsigned char* start,int long)
{
       int i;
       for(i=0;i<long;i++)
      {
            printf(“%.2x”,start);
            printf(“\n”);
      }
}
void show_int(int x)
{
       show_byte(&x,sizeof(int));
}
其中void show_int(int x)向void show_byte(unsigned char* start,int long)中传递的是一个指向整形的指针。。但根据void show_byte(unsigned char* start,int long)定义此函数应接收一个unsigned char类型的指针。。。这样的传递是正确的吗?为什么?另外为何要用unsigned char此数据类型表示一个字节?其合理性又在哪里?为什么这样表示?

ryxcaixia 发表于 2015-12-28 13:25:48



请忽略我的渣像素和手写的渣字体 能看到书上的内容就好

ryxcaixia 发表于 2015-12-28 14:25:20

传递的是一个指向整形的指针。。但根据void show_byte(unsigned char* start,int long)定义此函数应接收一个unsigned char类型的指针。。。这样的传递是正确的吗
1. 编译器隐式转换 具体详见林锐<c/c++高质量编程> 第四章第三节
大意摘抄如下
"基本类型之间存在如下的兼容关系, char is a int, int is along, long is a float, float is adouble"

2 为何要用unsigned char此数据类型表示一个字节?其合理性又在哪里?为什么这样表示?
一句话: 指针的类型决定了指针的视野

夜礼服 发表于 2015-12-28 21:35:24

ryxcaixia 发表于 2015-12-28 14:25
传递的是一个指向整形的指针。。但根据void show_byte(unsigned char* start,int long)定义此函数应接收一 ...

林锐<c/c++高质量编程> 第四章第三节。。。。。没找到。。

ryxcaixia 发表于 2015-12-29 08:29:38

这一版

苦哈哈 发表于 2015-12-29 11:30:12

来支持一下

夜礼服 发表于 2016-1-2 11:25:50

ryxcaixia 发表于 2015-12-29 08:29
这一版

求助。。求助。。在看c++primer时遇到了问题。。。。能问题在我的悬赏贴上。。
页: [1]
查看完整版本: 函数传指针。。