| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2936 人关注过本帖
标题:初来乍到, 有问题请教
取消只看楼主 加入收藏
wangchengbin
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2012-6-27
收藏
得分:0 
回复 18楼 TonyDeng
基本明白了.   

版主,
-1转化二进制是:11111111111111111111111111111111 32位. 就是32个1组成.   然后转化成16进制是FFFFFFFF 八个F.  但是计算器里计算出来是:16个F.    这是什么原因呢?
我查了我电脑是32位系统.


Thanks!
2012-06-28 22:46
wangchengbin
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2012-6-27
收藏
得分:0 
回复 21楼 TonyDeng
版主,
我刚回来.    按照题目   32位X86平台   应该选哪个呢?     四字, 双字,字,字节   是什么意思?     我刚才试了,选四字的时候确实是16个F.
2012-06-29 20:00
wangchengbin
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2012-6-27
收藏
得分:0 
回复 21楼 TonyDeng
...
2012-06-29 20:13
wangchengbin
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2012-6-27
收藏
得分:0 
回复 24楼 TonyDeng
已经全部明白.   

Many Thanks
2012-06-29 22:29
wangchengbin
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2012-6-27
收藏
得分:0 
回复 24楼 TonyDeng
楼主,

想请教另外一个问题.
3、调用函数Function2之后,x,y,z三个变量的值是什么?
void Function2(int  x,  int&  y,  int*  z)
{
    x = 1;
    y = 2;
    z = 3;
    return;
}

int x,  y,  z=0;
Function2(x,  y,  &z);
答:
我不知道怎么来解释???
2012-06-29 22:33
wangchengbin
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2012-6-27
收藏
得分:0 
回复 27楼 TonyDeng
版主, 你好!
是如下题目:

#include<stdafx.h>
#include"stdio.h"
void Function2(int  x,  int&  y,  int*  z)
 {
     x = 1;
     y = 2;
     *z = 3;
     return;
 }
 void main()
 {
   int x=0, y=0,z=0;
   Function2(x,y,&z);
   printf("%d %d %d",x,y,z);
 }
运行后是 0  2  3
结果与我分析的结果又差别.  我是这样理解的, x变量通过Function2函数调用后应该是x=1吧?
y通过Function2函数调用 是传递指针的话但是指针里的内容不变吧? x=0
z的话传递指针 通过Function2函数调用 其内容通过*z=3,所以z的内容等于3 这个能理解.
所以关于变量传递参数 怎么实现调用不太理解呢?





















































2012-06-30 08:13
wangchengbin
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2012-6-27
收藏
得分:0 
回复 31楼 TonyDeng
......         

不太理解参数传递.

我理解是把指针是指向变量地址.     而调用Function2 x=1 所以x值会改变啊.     y是指针传递调用Function2后 y=2 用不是*y=2 所以 y的值应该不变啊.      
#include<stdafx.h>
 #include"stdio.h"
 void Function2(int  x,  int&  y,  int*  z)
 {
      x = 1;
      y = 2;
      *z = 3;
      return;
 }
 void main()
 {
    int x=0, y=0,z=0;
    Function2(x,y,&z);
    printf("%d %d %d",x,y,z);
 }
2012-06-30 10:40
wangchengbin
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2012-6-27
收藏
得分:0 
回复 34楼 TonyDeng
Very Good!
Thanks.
2012-06-30 14:48
wangchengbin
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2012-6-27
收藏
得分:0 
回复 34楼 TonyDeng
Tony deng,
以下问题我不明白. 为什么sizeof(A)的值是12 ?   而我的理解是结构体A中int a  占4个字节  int*  占4个字节  char  c 占1个字节. 总共9个字节啊! 怎么会是12
而公用体它往往取最大的值.所以是4.这个我能理解.
在32位操作系统中A占________字节,B占________字节
#include<stdafx.h>
#include"stdio.h"
void  main()
{
   struct A{
        int  a;
        int*  b;
        char  c;
           };
union B
      {
        int  a;
        char  b;
        char*  c;
      };
printf("%d\n%d\n",sizeof(A),sizeof(B));
}
2012-06-30 15:01
wangchengbin
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2012-6-27
收藏
得分:0 
回复 40楼 TonyDeng
Tony,
什么叫字节对齐?    int a 为4  int *b 为4 所以 char c 也为4个字节?  char字符占1个字节吧?     结构体本来就是结构体里的内容相加。   有点迷糊。

在32位操作系统中A占________字节,B占________字节

    struct A{
         int  a;
         int*  b;
         char  c;
            };
2012-06-30 18:32
快速回复:初来乍到, 有问题请教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019369 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved