May 2008 Archives

郁闷的日子里

在杭州这段日子里,是比较郁闷的。 一些环境的变化以及对环境的不适应,牢骚也发了很多,项目的进展一直磕磕碰碰,而女朋友也在遥远的北方,思念也是一种苦啊! 在无论什么情况下,何时何地都好好的照顾自己吧!

一些标准的信号

   我们介绍一些标准信号的名称以及它们代表的事件。每一个信号名称是一个代表正整数的宏,但是你不要试图去推测宏代表的具体数值,而是直接使用名称。这是因为这个数值会随不同的系统或同样系统的不同版本而不同,但是名称还算是标准化和统一的。
   这些名称定义在signal.h中。
   int NSIG是一个定义的宏,它描述了定义的信号的数量。由于信号的数值是从0开始连续分配的,所以,NSIG比系统中所定义的最大的信号数值大1。

对C的指针一直有所欠缺,这里学到一些皮毛,分享一下:

结构体:
#defined MAX_LENGTH 200
typedef struct _TEST_EXAMPLE
{
    char name[MAX_LENGTH+1];
    int age;
} test_example;

结构体的首位置转换成Char指针,比如有10位同学:
test_example *te = (test_example *)malloc(sizeof(test_example) * 10);
//...结构体读取数据..
for (size_t i = 0; i < 10; i ++)
{
te[i].name = student[0];
te[i++].age = student[1];
}
char *result = (char *)te;

当用指针(char *)result做了一些操作后,最后要将Char*指到的首位和长度还原成结构体数组(结构体数组在内存中是连续的);打印结构体如下:
方法一:
size_t value_length = sizeof(test_example) * 10;
for (size_t i = 0; i < value_length; i ++)
{
    printf("%s\t", ((test_example *)(result + i))->name);
    printf("%d\n", ((test_example *)(result + i))->age);
    i += sizeof(test_example) - 1;
}

另外一种方法:
test_example *tmp = (test_example *)result;
for (size_t i = 0; i < value_length / sizeof(test_example); i ++)
{
    printf("%s\t%d\n", (tmp + i)->name, (tmp + i)->age);
}

看起来非常简单,起先我是使用纯指针去截取每个name和age的位置,但是结构体有个问题,随平台不同,结构体每个对象中所占用的空间也不一样,一般是int的整数倍,比如char a[10]是结构的唯一成员变量,其实相当于结构体仍然需要占用12个字节,具体bool这种类型是否也是int的整数倍,需要进行测试确认;所以最好的办法还是使用直接OO的方法指定,虽然指针也是一种OO。




回忆——一张很久的照片

想起这张照片,就想起了在绿色大学生论坛的时候~ 回想起来总是那么酸涩。

Monthly Archives

Pages

Powered by Movable Type 7.7.2

About this Archive

This page is an archive of entries from May 2008 listed from newest to oldest.

April 2008 is the previous archive.

June 2008 is the next archive.

Find recent content on the main index or look in the archives to find all content.