(c primer plus第五版) 学习笔记
第二章 c语言概述
一个简单的实例
#include <stdio.h>
int main(void)
{
int num; /*定义变量num*/
num = 1; /*给变量num赋值*/
printf("I am a simple"); /*使用printf()函数*/
printf("computer.\n");
printf("My favorite number is %d because it is first.\n",num);
return 0;
}
简单分析如下:
第一个语句:#include<stdio.h> 告诉编译器本源文件包含stdio.h中的所有信息包含函数、变量等
第二个语句:int main(void) 定义main函数类型为int,不接受任何参数(void)
第三和第四个语句:定义了int类型变量num,并赋值给num
第五、六和七语句:调用了stdio.h文件中的printf()函数
第六个语句:返回语句,返回值为0
深入分析:
第一:#include是c语言的预处理器指令(preprocessor directive),c编辑器在编译前要对源代码做一些准备工作,这称为预处理
第二:int main()函数,几乎所有的c程序都是从这个函数开始执行的,main()是c程序的基本模块 , 而int则声明函数返回的是整数,返回给操作系统,其他声明main的形式:
main() /* c90标准会支持这种形式,c99则不支持,最好不要这样声明*/
Void main() /*无返回值,最好也不要这样声明 */
第三:int num 定义了整型变量num,在c程序中,所有变量在使用之前必须定义而且必须给出类型,不然编译器通不过,会提示编译错误
第四:调用了c语言标准函数printf(),其中括号里面的是参数,当程序调用了printf()函数,将控制权交给prinft()函数,当完成调用了,就将控制权交给main()函数
最后一个语句:return 0;因为main函数是整数类型,所以必须返回一个整数类型的值,没有给出返回语句,相对c99标准来说编译器会提示编译错误
相关文档:
以前学生时代的时候就有遇到过这个问题,不过没去深究;
现在也是老问题,其实很简单,就是为了防止#include两个头文件的时候,把第一个头文件的最后一行和 第二个头文件的第一行拼接成一行;呵呵,其实很多问题都很简单,而且很隐蔽,只是我们很多时候没去注意! ......
原文链接:http://blog.csdn.net/sytstarac/archive/2009/08/05/4411519.aspx
编译器:vc++6.0(因为此种实现依赖编译器处理)
此处只简要叙述一下机制。并附部分关键指令序列。
准备:
1,关于EBP:称做栈基址指针。为什么这样说呢?我们先来看看函数调用的过程:
参数从右到左压栈。
call指令执行,该指令将导致EIP压 ......
进程I/O函数,与pclose函数一起使用。
表头文件
#include <stdio.h>
函数定义
FILE * popen
( const char * command
, const char * type
);
int pclose
( FILE * stream
);
函数说明
popen() 函数通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一 ......
通过把耗时长的函数用c语言实现,并编译成mex函数可以加快执行速度。Matlab本身是不带c语言的编译器的,所以要求你的机器上已经安装有VC,BC或Watcom C中的一种。如果你在安装Matlab时已经设置过编译器,那么现在你应该就可以使用mex命令来编译c语言的程序了。如果当时没有选,就在Matlab里键入mex -setup,下面只要根据提示 ......