2007年12月12日星期三

Magic C Point

在C/C++ 语言里面,指针真是一个奇妙、魔力无穷而又难以掌握的东西。今天上 csdn 看到下面这一段代码,要写出结果( 原地址在:一道考遍东北三省和青岛没有一人做出来的简单题目 )


[code:c]
#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;
}
[/code]


37楼 kingqin 大牛给的答案不错,学习了。
[code:c]
#include
int main(void)
{
int a[5]={1,2,3,4,5};
//假设a的地址为0x80000000,sizeof(int)=4
//假设是little-endian,则0x80000000-0x80000013的数据为:
// addr: 00 01 02 03 04 05 06 07
// data: 01 00 00 00 02 00 00 00
// addr: 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13
// data: 03 00 00 00 04 00 00 00 05 00 00 00
int *ptr1=(int *)(&a+1);
//ptr1 = 0x80000000+20=0x80000014
int *ptr2=(int *)((int)a+1);
//ptr2 = 0x80000000+1 = 0x80000001
//&ptr1[-1] = 0x80000014-4 = 0x80000010 ;
//so ptr1[-1] = *(int *)0x80000010 = 5
//*ptr2 = *(int *)0x80000001 = 0x02000000
printf("%x,%x",ptr1[-1],*ptr2);
return 0;
}
[/code]


csdn 上很多人说这个很简单,意思是其实就是 我太菜了! 怎么办啊 ?!!

2007年12月7日星期五

ChangIp

在我们学校,提供网络服务的有两家,学校和电信。各有优缺点我就不说了,关键是我需要经常在这两种网络之间换来换去,如果每次都手工去该的话,真累,于是ChangIP诞生了。
写出来的目的是给自己用的,所以没有考虑多网卡或者其他的什么情况

见谅

运行时如果发现有内存读写错误, 请把 changeIP.ini 删除就好

没有加入错误输入检查, 所以问你输入的东西不要乱输, 按照提示来比较好, 否则, 呵呵……

没有什么技术含量, 纯粹是手工活。

弄得还比较抓狂,自己用着还够用, 所以本软件 不再更新。

提供下载:ChangIp.rar

2007年12月1日星期六

iplussMessage

iplussMessage是我在华侨大学桑梓年华开源板块发布的一个linux下聊天的小程序,目前版本是0.02版,现在在这里也发布一下

这里下载:
第一个版本iplussMessage0.01:
iplussMessage0.01
第二个版本iplussMessage0.02pre:
iplussMessage0.02pre

第二个版本源文件:
iplussMessage0.02pre-src
V0.02 pre 发布:

为什么叫做 V0.02pre呢,因为它远没有达到我预想的要求, 再最后阶段, 我删除了一半的文件, 所以本来应该有20个文件在里面的

因为马上要考试, 不愿意急着写下去了, 所以就地开源

源代码全部贴出来,希望可以在桑梓开源社区得到良好的发展。

代码写的超级烂的, 因为这完全不是正式版, 至于小小程序有这么多代码, 讲个简单的例子,公交车载一个人也要跑一趟,十个人也是一趟。

最近几天真的很抓狂,前天嘛, 误删一个已经写好的 函数库, 要知道那个那个文件写了好久啊, 这了给大家一个建议: 千万不要哟哦嗯shift+delete 删文件了,就算这个文件再没用,也要先把它请到回收站, 一闪,然后 2秒后就后悔的事情太多了。

刚刚又遇到抓狂的事情是 用到的一个函数库 ,建立了一个表单 ,为了传递 用户输入的参数, 花了我一个晚上的时间, 因为那个死BT函数变态至极,没有说明文档, 害我瞎蒙N次, 在gdb里面按到手酸才好。

因为很抓狂 连Makefile都忘了怎么写了, 于是写了一个极其 愚蠢的 Makefile

-----------------------------------------------------------------------------------------------------------------------------
V0.01发布:

华侨大学开源社区第一炮

由我来点!嘿嘿

刚刚上手linux网络编程 ,写了一个 linux下的 聊天小程序

发布为 0.01版

因为实在是太简单,都不好意思把源代码贴出来, 故只贴出 可执行文件先,等以后的版本搞复杂了再全部公开代码 (不让你一下就看懂,嘿嘿)

从本帖下载 可执行文件

用法;

解压 (ZIP格式的 用右键吧……)

1.先在一台机器上 运行 使其成为主机 命令 ./iplussMessage 你的呢称

2。然后在另外一台机器上运行 ./iplussMessage 交谈对方自己的昵称 主机的IP地址

请把上面的中文改成你需要的东西(汗……)

需要注意的是 你的昵称不能超过 8个字节, 否则缓冲区 溢出……(不关我的事,我要把缓冲区设为一万个字也行,让费的是你的内存)

当然上面的步骤可以在一台机器上面试验,不过 下面的那个 “主机IP地址” 就换成 127.0.0.1 就行了

接下来的版本准备加入文件传输功能,还有 GUI 界面