指针变量的定义和初始化[c][code]
原帖:
http://hi.baidu.com/pepsi360/blog/item/cc74be4412cf6789b3b7dcd4.html
#include <stdio.h>
struct Node
{
int a;
char b[10];
Node *next;
};
main(void)
{
char *p=NULL; //"define NULL 0" included in <stdio.h>
int *q=0; //值0是唯一能够直接赋给指针变量的整数值
double *d;
Node *pNode=NULL;
d=NULL;
return 0;
}
以上代码在VC环境下调试运行。
step1. 运行完语句Node *pNode=NULL;后:
Name Value
+ &p 0x0012ff7c ""
+ &q 0x0012ff78 ""
+ &d 0x0012ff74 ""
+ &pNode 0x0012ff70 ""
Memory:
0012FF66 CC CC CC CC CC CC CC CC CC CC 00 烫烫烫烫烫.
0012FF71 00 00 00 CC CC CC CC 00 00 00 00 ...烫烫....
0012FF7C 00 00 00 00 C0 FF 12 00 39 11 40 ........9.@
step2. 运行完语句d=NULL;后:
Name Value
+ &p 0x0012ff7c ""
+ &q 0x0012ff78 ""
+ &d 0x0012ff74 ""
+ &pNode 0x0012ff70 ""
Memory:
0012FF66 CC CC CC CC CC CC CC CC CC CC 00 烫烫烫烫烫.
0012FF71 00 00 00 00 00 00 00 00 00 00 00 ...烫烫....
0012FF7C 00 00 00 00 C0 FF 12 00 39 11 40 ........9.@
在Turbo C中的代码如下:
#include <stdio.h>
struct Node
{
int a;
char b[10];
struct Node *next; /* struct不能少 */
};
main(void)
{
char *p=NULL; /* "define NULL 0" included in <stdio.h> */
int *q=0;
&
相关文档:
. 编译单元(模块):
在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌入式下做开发工作的 ......
1. 在C语言中内嵌汇编
在C中内嵌的汇编指令包含大部分的ARM和Thumb指令,不过其使用与汇编文件中的指令有些不同,存在一些限制,主要有下面几个方面:
a. 不能直接向PC寄存器赋值,程序跳转要使用B或者BL指令
b. 在使用物理寄存器时,不要使用过于复杂的C表达式,避免物理寄存器冲突
c. R12和R13可能被编译 ......
我觉得,在输入输出函数中,scanf()函数,应该是最麻烦的,有时它给我们的结果很可笑,但是一定是一原因的....
首先声明一下,这篇日志不是介绍scanf()中各种格式符用法的文章(没有这个必要,但是大家一定要会用).
我尝试了很多种输入,包括一些错误的练习,曾经对scanf()由迷茫转向清醒,又由清醒再次转向迷茫......不知道何时是个 ......
本文来自:Linux教程 -- http://doc.linuxpk.com/53295.html
如有不明白之处,欢迎参加社区讨论
1.Linux“线程”
笔者曾经在《基于嵌入式操作系统VxWorks的多任务并发程序设计》(《软件报》2006年第5~12期)中详细叙述了进程和线程的区别,并曾经说明Linux是一种“多进程单线程”的操作系统。 ......