2009-10-17 11:32
sizeof()
sizeof是运算符,可用于任何变量名、类型名或常量值,当用于变量名(不是数组名)或常量时,它不需要用圆括号。
它在编译时起作用,而不是运行时。
这是初学者问得最多的一个问题,所以这里有必要多费点笔墨。让我们先看一个结构体:
struct S1
{
char c;
int i;
};
问sizeof(s1)等于多少聪明的你开始思考了,char占1个字节,int占4个字节,那么加起来就应该是5。是这样吗你在你机器上试过了吗也许你是对的,但很可能你是错的!VC6中按默认设置得到的结果为8。
Why为什么受伤的总是我 |
2009-10-17 11:27
#include
int main()
{
int a[5]={1,2,3,4,5};
int *ptr1=(int *)(&a+1);
int *ptr2=(int *)((int )a+1);
printf("%x,%x",ptr1[-1],*ptr2);
return 0;
}
第一个,&a 取得地址以后加一的操作,指针增加了sizeof(a)这么多的绝对地址。这应该是指针加了20,然后一个-1有减去了4,这样相当于指针的绝对地址加了16,指向的就是a[4]的首地址
第二个,加的是绝对内存地址,假如原来是0x0001,加完了以后是0x0002
然后再考虑pc的小端存储(little endian)
a 的内存存放
地址: 00 01 |
2009-10-17 11:17
题目:s的输出结果
#include
struct s {
char ch, *ptr;
union {
short a, b;
unsigned int c:2, d:1;
};
struct s * next;
};
int main()
{
printf(”%d\n”,sizeof(struct s));
return 1;
}
答案:16
1byte ch 3bytes补齐
4bytes ptr
4bytes union
4bytes next
————————————————————————————————————————-
知道struct的sizeof不是成员类型大小的简单相加,对”对界”问题搞的不是很明白,请高手详细解答一下。
struct A
{
int a;
char b;
double c;
};
sizeof(A)=?
还有利用 |
2009-09-28 13:55
1.求下面函数的返回值(微软)
int func(x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}
假定x = 9999。 答案:8
思路:将x转化为2进制,看含有的1的个数。
2. 什么是“引用”?申明和使用“引用”要注意哪些问题?
答:引用就是 |
2009-09-27 18:03
#include <iostream>
#include <cstdio>
using namespace std;
template <typename T>
class DuList
{
public:
DuList();
~DuList();
void insert(const T&);
void print(const T&);
void check(const T&);
void del(const T&);
private:
typedef struct Node
|
2009-09-26 21:26
按下面矩阵的输出写出相应的程序:
n=5:
1 2 9 10 25
4 3 8 11 24
5 6 7 12 23
16 15 14 13 22
17 18 19 20 21
n=6:
1 2 9 10 25 26
4 3 8 11 24 27
5 6 7 12 23 28
16 15 14 13 22 29
17 18 19 20 21 30
36 35 34 33 32 31
解析:这是网易有道的一道面试题
void PrintCircleMatrix( int m )
{
vector<vector > vecint (m, vector (m));
for(int n = 1; n<=m; n++)
{
if(n%2 == 1)
{
value = n*n;
for(int i = 0; i<n; i++)
{
vecint[i][n-1] = value--:
|
2009-09-26 17:52
有一个人站在电影院门口卖票,票价50,一开始手上没有找零的钱,
现在有两种人来买票,A拿着100元的钱,人数为m(m<20),B拿着50元的钱,
人数为n(n<20)。卖票的人必须用从B类人中那里得来钱找给A,所以卖票
的顺序是有限制的。
要求写一个程序打印出所有的买票序列:
例如:m =2 ,n = 3;
BABAB
BBAAB
BBBAA
BBABA
bool Check( ulong i,int m, int n)
{
int count = 0;
int countA = 0;
int countB = 0;
while(i >= 0)
|
2009-09-26 16:50
2009-09-11 17:18
top命令
top命令和ps命令的基本作用是相同的,显示系统当前的进程和其他状况;但是top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如? 前台执行该命令,它将独占前台,直到用户终止该程序为止。比较准确的说,top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用。内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。在后面的介绍中 |
2009-08-28 09:53
嵌入式开发.C语言面试题 http://www.ad0.cn/netfetch/
预处理器(Preprocessor)
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
我在这想看到几件事情:
1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 |
|
|
anning417
男
|