
根据这个帖子:“对于C语言中指针和数组的认识和看法,欢迎讨论”http://bbs.chinaunix.net/thread-960717-1-1.html
调试了一个小程序:
[code]#include
by kewenliang - C/C++ - 2008-07-24 18:51:03 阅读(1718) 回复(13)
int main() { int i=0; printf("%d\n",&i); } 怎么打印出来是个负值啊! (请问这个地方出来的值还对不) 难道有问题. 用printf("%0x\n",&i)打印出来是bffffb24
0指针(Type*)0的虚拟地址是0,(Type2*)0 == (Type*)0 关于结构体的内存布局问题,有兴趣可以探讨一下 http://blog.chinaunix.net/u1/49865/showart_1901403.html [ 本帖最后由 daxi1987 于 2009-4-20 11:37 编辑 ]
本人在学习C过程中,遇到下面的程序输出,感到不解,请各位高手为什么输出这样的结果! main() { char *name[]={"First!","Follw me!","Great Wall","Coputer"}; char **p; p=name+1; printf("%s\n",*name); printf("%s\n",name[0]); printf("%o\n",*p); printf("%o\n",name[1]); printf("%s\n",*p); printf("%s\n",*(name+1)); printf("%s\n",name[1]); ...
又是指针 我知道烦 我也烦 ai int *p; p=1; printf( "%d\n",p ); 结果p=1 int *p; p=(int *)0x12345678; printf( "%d\n",p ); 结果p=随即值; 我不明白的是等号左边都是p 可是右值又可以是值也可以是地址 那编译器怎么知道右边是什么呢? 还想问的是printf在打印的时候都是p 如果我用%d她怎么就知道打印值 %x就打印地址呢 其实这句话我也没描述明白 看一次书就晕一次 而且上面的代码我分别在linux和win上编译过...
昨天写了一个小程序,在分配地址的时候出了点问题。 程序如下: bool CWorkerThread ::CompareMeterID(int nTmpMeter) { char TmpStr[1024]; int nTmp[100]; char* TmpMeterID; int Number = 0; int StrNum = 0; int len = 0; int tmp = 0; len = strlen(m_sMeterID)+1; for(tmp = 0; tmp < 100; tmp ++) { nTmp[tmp] = -1; } //TmpMeterID = new char[len]; //memset(TmpMeterID, 0, len); TmpMeterID = m_sMe...
一个函数原型如下: [code]q_vbroadcast(ULONG qid, void * msgbuf, ULONG msg_len, ULONG * count)[/code] 现对于参数ULONG * count有两种操作: [code]操作1: unsigned long count = 2; q_vbroadcast(mq, s1, i, &count);[/code] [code]操作2: unsigned long *count = 2; q_vbroadcast(mq, s1, i, count);[/code] 它们有什么区别?为什么第二种方法不能通过编译?
/*************************************************/ /* Get Host Name */ /*************************************************/ if ((host=gethostbyname(SERVER_NAME)) == NULL) { herror("gethostbyname"); exit(1); } /*************************************************/ /* Initialize the socket address structure */ /****************...
#include