My Study
About My learn or Study etc.
1
标签为“指针”的日记
对指针**p的分析研究
Cnangel
(
November 7, 2008 11:35 AM
)
最近看到ChinaUnix有人问一个二维数组的问题,提问者写成这个样子:
查看全文:
对指针**p的分析研究»
结构体数组和Char指针之间的转换
Cnangel
(
May 12, 2008 4:11 PM
)
对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。
1
September 2010
日
一
二
三
四
五
六
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
最新日记
非root环境下安装RPM包
使用Mysql出core
autoconf讲座一篇
使用rcsid来控制你的库版本
[转贴]周报的逻辑
exportfs与sshfs
尖椒炒肉绝招
关于build系统
distcc 介绍
一种特殊的一致性哈希算法的研究
标签
perl
fedora
make
linux
gcc
Perl
php
autoconf
c
c++
configure
Makefile
automake
mysql
PHP
yum
apache
C
MT4
rpm
Monthly
归档
September 2010 (1)
August 2010 (4)
July 2010 (3)
June 2010 (3)
May 2010 (4)
April 2010 (1)
March 2010 (4)
February 2010 (2)
January 2010 (7)
December 2009 (4)
November 2009 (4)
October 2009 (5)
September 2009 (7)
August 2009 (2)
July 2009 (4)
June 2009 (11)
May 2009 (4)
April 2009 (6)
March 2009 (7)
February 2009 (2)
January 2009 (4)
December 2008 (6)
November 2008 (10)
October 2008 (5)
September 2008 (7)
August 2008 (9)
July 2008 (9)
June 2008 (7)
May 2008 (4)
April 2008 (3)
March 2008 (9)
February 2008 (7)
January 2008 (12)
December 2007 (7)
November 2007 (7)
October 2007 (5)
September 2007 (4)
August 2007 (4)
July 2007 (8)
June 2007 (4)
May 2007 (4)
April 2007 (5)
March 2007 (3)
January 2007 (2)
December 2006 (5)
November 2006 (5)
October 2006 (2)
September 2006 (15)
August 2006 (6)
July 2006 (8)
April 2006 (13)
Friend Links
Easun's WebBlog
Blue Moon
此 Blog 中的日记遵循
Creative Commons(创作共用)授权
.
登录
搜索
标签
.rpmmaros (1)
3d (1)
ab (1)
AC_INIT (1)
aclocal (2)
AES (1)
afm (1)
Algorithms (1)
amd (1)
amdcccle (1)
apache (4)
api (1)
Applications (1)
apr (1)
ati (2)
aticonfig (1)
ati显卡驱动 (1)
autoconf (6)
autoheader (2)
automake (5)
autoreconf (1)
autoscan (2)
av (1)
Balance (1)
base64 (1)
bash (2)
Berkeley DB (1)
beyond compare 2 (1)
beyond compare 3 (1)
bloom filter (1)
BossPref (1)
bsd (1)
Bug (1)
c (6)
C (4)
c++ (6)
C++ (2)
calloc (1)
centos (2)
CFLAGS (1)
cgi (1)
checksum (1)
CJK (1)
cnangel (1)
configure (6)
Consistent Hashing (1)
Content Match (1)
Counter-Strike (1)
cp936 (1)
CPA (1)
cpan (1)
CPC (1)
CPD (1)
CPI (1)
CPL (1)
CPM (1)
CPO (1)
CPP (1)
cppreference (1)
CPR (1)
CPS (1)
cpu (1)
CPV (1)
createrepo (1)
crossover (1)
CS (1)
cs (1)
ctags (1)
CTR (1)
curl (1)
cuteftp (1)
cvs (1)
cygwin (1)
DAT (1)
DBD::Pg (1)
DBI (2)
DCH (1)
DD (1)
dell (1)
DES (1)
Double Array Trie (1)
dvipdfmx (1)
e6400 (1)
eclipse (2)
enc (1)
esyscmd (1)
etc (1)
exportfs (1)
EXTEND (1)
ExtUtils-MakeMaker (1)
fedora (12)
firefox (3)
firefox插件 (1)
fontforge (1)
freebsd (2)
freemind (1)
freetype (1)
fsck (1)
fuse (1)
g++ (1)
GBK (1)
gbkfonts (2)
gcc (7)
GD (1)
GetStringUTFChars (1)
GForum (1)
gftp (1)
git (2)
gnome (1)
google (2)
gpg (1)
gstreamer (1)
gv (1)
h2xs (1)
Hash (1)
hash_map (1)
hosts (1)
HTTP (3)
http_load (1)
httpd (3)
HTTP协议 (2)
hv (1)
iconv (2)
ident (1)
ie (2)
ifconfig (1)
imake (1)
iMakefile (1)
Information Retrieval (1)
init.d (1)
Inline (1)
iphone (3)
iptables (1)
ipw2200 (1)
ipw3945 (1)
iTunes (1)
jni (2)
JNU_GetStringNativeChars (1)
jpeg (1)
jpgraph (1)
LaTeX (1)
LD_LIBRARY_PATH (1)
LDFLAGS (1)
leohacks (1)
lex (2)
libcurl (2)
libcx (1)
libiconv (2)
Library (1)
libtool (1)
libtoolize (1)
libxml2 (3)
linux (8)
Linux (3)
Linux应用心得 (2)
Load (1)
lost+found (1)
m4_esyscmd (1)
Machine learning (1)
mail (1)
make (11)
make install (3)
Makefile (6)
Makefile.nox (1)
malloc (3)
mallopt (1)
map (1)
Matrix (1)
md5 (2)
Meld (2)
memcache (1)
memcached (2)
memory (2)
memory manage (1)
MLR (1)
MM (1)
mod_perl (1)
Module-Build (1)
Module-Install (1)
module-starter (1)
Monotonicity (1)
Movable Type (2)
mplayer (2)
MPP (1)
msn (1)
MT (3)
MT4 (4)
MT5 (1)
mv (1)
mysql (5)
MySQL (2)
netease (1)
new (2)
nfs (1)
nfsd (1)
NLP (1)
NPTL (1)
Olympic (1)
openoffice (1)
openproj (1)
Optimization (1)
patch (1)
pdflatex (1)
perl (13)
Perl (7)
perlapi (2)
perlguts (2)
perlxs (1)
pfb (1)
php (7)
PHP (5)
pid_t (1)
pidgin (2)
pkg-config (1)
PostgreSQL (3)
PPC (1)
PPL (1)
PPS (1)
Pragmas (1)
project (1)
pthread_create (1)
pthread_t (1)
pulse (1)
PUSHs (1)
python (2)
QQWry (1)
rc.d (1)
RCS (1)
rcsid (1)
realloc (1)
reciteword (1)
Red-black tree (1)
redhat (1)
ReleaseStringUTFChars (1)
Relevance (1)
repo (1)
RHEL (3)
rm (1)
rpm (4)
RPM-GPG-KEY (2)
rpmbuild (2)
rsync (1)
safari (1)
scim (1)
scp (1)
screen (1)
SEO优化 (1)
setcookie (1)
sha256 (1)
shared (1)
shell (1)
Shell (1)
sign (1)
slabs (2)
SMP (1)
SP (1)
spec文件 (1)
Spread (1)
sqlite (1)
SQLite (1)
sqlite2 (1)
ssh (3)
sshd (1)
sshfs (1)
ST (1)
static (1)
Statistics (1)
stlchina (1)
struct (1)
Style (1)
subversion (1)
suse (2)
sv (1)
sv_2mortal (1)
svn (2)
syscall (1)
tags (1)
tetex (1)
tex (1)
TeX (1)
tfm (1)
top_srcdir (1)
totem (1)
tracerount (1)
trie (1)
trim (1)
Twiki (2)
TWiki (1)
twiki (1)
Ubuntu (1)
ubuntu (1)
uc (1)
ulimit (1)
unix (1)
unordered_map (1)
urlencode (1)
uuencode (1)
vim (4)
virtualbox (1)
visibility (1)
vnc (1)
vsftpd (1)
Wiki (1)
wiki (1)
windows (1)
windowsXP (1)
wine (2)
xpm (1)
XPUSHs (1)
xs (2)
xsloader (1)
xsub (3)
yacc (2)
yahoo (4)
yum (5)
zend (3)
二次编码 (1)
二维数组 (1)
代理 (1)
优化 (1)
信号 (1)
公钥 (1)
冬天 (1)
分散性 (1)
升级 (1)
单调性 (1)
原码 (1)
反码 (1)
命令行 (1)
哈尔滨 (1)
哈尔滨,吉林 (1)
圣诞节 (1)
基础平台 (1)
女朋友 (1)
字符 (1)
字符串 (1)
字节对齐 (1)
尖椒炒肉 (1)
居庸关 (1)
平衡性 (1)
幸运 (1)
广告 (1)
开源 (1)
心得 (1)
恋爱 (1)
感冒 (1)
扩展 (1)
批量查询ip (1)
指针 (2)
搜索引擎 (1)
搬家 (1)
数学 (1)
数组 (2)
断点续传 (1)
杭州 (2)
校园 (1)
桐庐 (1)
模型 (1)
正则 (1)
汉字 (1)
源码 (1)
源码编译 (1)
照片 (1)
猪肉 (1)
白苹果 (1)
白领 (1)
神话 (1)
系统启动 (1)
经济危机 (1)
结构体 (1)
翻译 (1)
自动补全 (1)
草莓 (1)
虚拟化 (1)
蜘蛛抓取 (1)
补码 (1)
读音 (1)
负载均衡 (1)
越界 (1)
辣椒 (2)
辣椒炒肉 (1)
迁移数据 (1)
销售 (1)
销售人员 (1)
长城 (1)
阿里巴巴 (1)
雅虎 (2)
青岛 (1)
静态库 (1)
非计算机呓语 (1)
项目管理 (1)
餐馆 (1)
饮食 (1)
鲜花 (1)
分类
C/C++ (21)
Linux世界 (78)
MT相关 (9)
cnangel手记 (92)
我和PHP (10)
我和Perl (23)
新闻娱乐 (32)
杂苑笔记 (46)
电脑技巧 (70)
精彩美食 (7)
订阅 Rss Feed
订阅 Atom Feed
[
这是什么?
]