c语言中void main的用法
- 格式:docx
- 大小:36.68 KB
- 文档页数:2
c语言void的用法许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。
下面小编就跟大家介绍下c语言void 的用法。
c语言void的用法1.void的含义void的字面意思是“无类型”,void*则为“无类型指针”,void*可以指向任何类型的数据。
void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:voida;这行语句编译时会出错,提示“illegaluseoftype'void'”。
不过,即使voida的编译不会出错,它也没有任何实际意义。
void真正发挥的作用在于:(1)对函数返回的限定;(2)对函数参数的限定。
我们将在第三节对以上二点进行具体说明。
众所周知,如果指针p1和p2的类型相同,那么我们可以直接在p1和p2间互相赋值;如果p1和p2指向不同的数据类型,则必须使用强制类型转换运算符把赋值运算符右边的指针类型转换为左边指针的类型。
例如:float*p1;int*p2;p1=p2;其中p1=p2语句会编译出错,提示“'=':cannotconvertfrom'int*'to'float*'”,必须改为:p1=(float*)p2;而void*则不同,任何类型的指针都可以直接赋值给它,无需进行强制类型转换:void*p1;int*p2;p1=p2;但这并不意味着,void*也可以无需强制类型转换地赋给其它类型的指针。
因为“无类型”可以包容“有类型”,而“有类型”则不能包容“无类型”。
道理很简单,我们可以说“男人和女人都是人”,但不能说“人是男人”或者“人是女人”。
下面的语句编译出错:void*p1;int*p2;p2=p1;提示“'=':cannotconvertfrom'void*'to'int*'”。
C语言之Main函数返回值问题分析C语言之Main函数返回值问题分析:很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。
C/C++ 中从来没有定义过void main( ) 。
C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even been C.( void main( ) 从来就不存在于 C++ 或者 C )。
下面我分别说一下 C 和C++ 标准中对 main 函数的定义。
“The C programming Language(《C 程序设计语言》)用的就是main( )。
”--- 这是因为第一版的C语言只有一种类型,那就是int,没有char,没有long,没有float,…………既然只有一种类型,那么就可以不写,后来的改进版为了兼容以前的代码于是规定:不明确标明返回值的,默认返回值为int,也就是说 main()等同于int main(),而不是等同于void main()。
在C99中,标准要求编译器至少给 main() 这种用法来个警告。
1. C在 C89 中,main( ) 是可以接受的。
Brian W. Kernighan 和Dennis M. Ritchie 的经典巨著 The C programming Language 2e(《C 程序设计语言第二版》)用的就是 main( )。
不过在最新的 C99 标准中,只有以下两种定义方式是正确的:int main( void )int main( int argc, char *argv[] )(参考资料:ISO/IEC 9899:1999 (E) Programming languages — C 5.1.2.2.1 Program startup)当然,我们也可以做一点小小的改动。
C语言中main的含义简介在C语言中,`m ai n`是一个特殊的函数,是程序执行的起点和入口。
本文将深入探讨`mai n`函数的含义,以及它在C语言程序中的作用。
`main`函数的定义与声明在C语言中,`m ai n`函数的定义和声明如下所示:i n tm ai n(vo id){//执行程序的代码r e tu rn0;}`main`函数的参数无参数形式`m ai n`函数的无参数形式声明如下:i n tm ai n(vo id)这表示`ma in`函数不接收任何参数。
带参数形式`m ai n`函数的带参数形式声明如下:i n tm ai n(in ta rg c,c h ar*a rg v[])其中,`ar gc`表示命令行参数的个数,`a rg v`是一个指向字符串数组的指针,每个字符串表示一个命令行参数。
程序入口与起点在执行C语言程序时,操作系统会首先调用`ma in`函数作为程序的入口和起点。
`ma in`函数是程序与操作系统之间的桥梁,通过`ma in`函数,程序开始执行并产生相应的结果。
`main`函数的返回值`m ai n`函数的返回值是一个整数,表示程序的终止状态。
根据惯例,返回值为0表示程序正常终止,而非零值则表示程序异常终止,可以用于表达程序的执行结果。
`main`函数的执行过程`m ai n`函数的执行过程可以分为三个阶段:初始化阶段、执行阶段和清理阶段。
初始化阶段在初始化阶段,操作系统会完成一些必要的准备工作,例如为程序分配内存空间、加载库函数等。
执行阶段在执行阶段,程序会按照`m ai n`函数中编写的代码逐行执行,实现程序的功能和逻辑。
清理阶段在执行阶段结束后,操作系统会清理程序运行所占据的内存空间,释放系统资源。
`main`函数的常见用法执行简单程序`m ai n`函数可以用于执行简单的程序,例如打印"H el lo,W o rl d!"等。
#i nc lu de<s td io.h>i n tm ai n(vo id){p r in tf("He ll o,Wor l d!\n");r e tu rn0;}处理命令行参数通过带参数形式的`m a in`函数,我们可以处理命令行参数,实现程序的灵活性和可配置性。
关于C语言的void main()作者:admin 发布时间:2012-02-13 17:41 来源:C语言中文网人围观分享到:QQ空间新浪微博人人网腾讯微博豆瓣15很多人甚至市面上的一些书籍,都使用了void main( ),其实这是错误的。
C/C++中从来没有定义过void main( )。
C++之父Bjarne Stroustrup 在他的主页上的FAQ中明确地写着The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even been C.( void main( )从来就不存在于C++或者C)。
下面我分别说一下C和C++标准中对main函数的定义。
一、 C语言中的main()在C89中,main( )是可以接受的。
Brian W. Kernighan和Dennis M. Ritchie 的经典巨著The C programming Language 2e(《C 程序设计语言第二版》)用的就是main( )。
不过在最新的C99标准中,只有以下两种定义方式是正确的:int main(void)int main(int argc, char *argv[])(参考资料:ISO/IEC 9899:1999 (E) Programming languages ? C 5.1.2.2.1 Program startup)当然,我们也可以做一点小小的改动。
例如:char *argv[]可以写成char **argv;argv和argc可以改成别的变量名(如intval和charval),不过一定要符合变量的命名规则。
如果不需要从命令行中获取参数,请用int main(void);否则请用int main(int argc, char *argv[])。
main函数的返回值类型必须是int,这样返回值才能传递给程序的调用者(如操作系统)。
c语言中void main的含义在C语言中,void main是一种错误的写法,正确的主函数声明应该是int main(void)或int main(int argc, char *argv[])。
让我们详细解释这个正确的形式。
int main(void)的含义在C语言中,程序的执行始于main函数。
main函数是程序的入口点,它的返回类型是整型(int)。
标准的main函数形式为:cint main(void){// 程序的主体部分return0;// 表示程序正常退出}这里的int表示main函数会返回一个整数值,而void则表示该函数不接受任何参数。
这是因为C语言标准规定,如果main函数没有参数,应该使用void关键字显式声明,而不是留空参数列表。
返回的整数值通常用于向操作系统表明程序的执行状况,一般约定返回值为0表示程序正常结束,非零值表示程序出现了错误。
int main(int argc, char *argv[])的含义int main(int argc, char *argv[])是另一种常见的main函数形式,其中argc表示命令行参数的数量,argv是一个指向字符数组的指针数组,用于存储每个命令行参数的字符串。
这种形式通常用于接受从命令行输入的参数。
例如:cint main(int argc,char*argv[]){// argc 表示命令行参数的数量// argv 是一个指向字符数组的指针数组,存储每个命令行参数的字符串// 程序的主体部分return0;// 表示程序正常退出}这样的形式使得程序可以通过命令行传递参数,对程序的行为进行调整。
为什么使用int main?C语言标准规定main函数的返回类型必须是整型,这是因为程序的返回状态通常由返回值来表示。
一般来说,返回0表示程序成功执行,而其他非零值表示程序出现了错误。
这种设计允许操作系统或其他调用程序根据main函数的返回值来判断程序的执行状况。
main在c语言的意思
在C语言中,`main`是程序的入口点,也是程序执行的起始函数。
它是C语言程序中必须存在的一个函数,没有`main`函数的程序无法被编译和执行。
`main`函数有以下特点:
1. `main`函数的返回类型必须是`int`,表示函数返回一个整数值作为程序的退出状态码。
2. `main`函数可以带有参数,这些参数可以是命令行传递给程序的参数,也可以没有参数。
3. `main`函数在程序中只能有一个,它标识了程序的起始点。
4. `main`函数可以调用其他函数,也可以被其他函数调用。
`main`函数的定义可以有两种形式:
1. `int main(void)`:表示不接受任何参数。
2. `int main(int argc, char *argv[])`:表示接受两个参数,`argc`表示命令行参数的个数,`argv`表示一个指向字符串数组的指针,每个字符串都是一个命令行参数。
`main`函数的执行过程如下:
1. 程序从`main`函数开始执行。
2. 执行`main`函数中的语句。
3. 当程序执行到`return`语句时,将返回值作为程序的退出状态码,传递给操作系统。
4. 操作系统根据退出状态码判断程序的执行情况,通常0表示程序正常结束,非0表示程序发生错误。
在`main`函数中,可以编写程序的逻辑代码,包括变量的声明、赋值、函数的调用、条件判断、循环等。
`main`函数的返回值可以被用于判断程序的执行结果,根据不同的返回值可以采取不同的处理方式。
main函数返回值【1】main函数【2】main()经典的C风格函数头,如下:main()在C语⾔中,省略返回类型相当于说函数的类型为int。
但是,需要明确,C++逐步淘汰了这种⽤法。
另外,在C语⾔中,让括号空着意味着对是否接受参数保持沉默。
【3】int main() 和 int main(void)在C++中,让括号空着与在括号中使⽤void等效。
在括号中使⽤关键字void明确指出,函数不接受任何参数。
【4】void main()有些程序员使⽤void main()这样的函数头,并省略返回语句。
逻辑上是⼀致的,因为void返回类型意味着不返回任何值。
但由于它不是当前标准强制的⼀个选项,因此有些系统上不能⼯作。
因此,读者应该避免使⽤这种格式,⽽应使⽤C++标准格式,相⽐⽽⾔,也没有增加太多的⼯作。
【5】int main()特殊让步ANSI/ISO C++标准对那些抱怨必须在main()函数最后包含⼀条返回语句过于繁琐的⼈做出来让步。
如果编译器到达main()函数末尾没有遇到返回语句,则认为main()函数以如下语句结尾:return 0;这条隐含的返回语句只适⽤于main()函数,⽽不适⽤于其他函数。
VS2017 ⽰例程序如下:1// Test1:不加return23 #include <iostream>4using namespace std;56int main()7 {8 cout << "main return without value" << endl;9 }1011// Test2:加return1213 #include <iostream>14using namespace std;1516int main()17 {18 cout << "main return with value" << endl;19return0;20 }Good Good Study, Day Day Up.顺序选择循环总结。
C51程序的函数教程C51是一种基于哈佛体系结构的经典单片机架构,广泛应用于各种嵌入式系统中。
C51程序是指使用C语言编写的针对C51单片机的程序代码。
在本文中,我们将介绍C51程序中常用的几个重要函数,并提供一些实例来帮助读者更好地理解其用法。
1. 主函数(main函数)主函数是C程序的入口点,它是程序的起始位置。
在C51程序中,主函数的定义形式如下:```cvoid main(void)//程序代码```主函数中的程序代码将按照顺序执行,可以包括变量定义、函数调用、条件语句和循环语句等。
2.IO口输入输出函数IO口输入输出函数用于控制C51单片机的输入输出引脚。
C51单片机通常具有多个IO口,每个IO口可以配置为输入或输出。
以下是几个常用的IO口输入输出函数:- `void P0 = value;`:将value的值输出到P0口。
- `value = P0;`:将P0口的值读取到value变量。
- `void P1 = value;`:将value的值输出到P1口。
- `value = P1;`:将P1口的值读取到value变量。
3.延时函数延时函数用于在程序中添加延迟以实现时间控制。
C51单片机没有内置的延时函数,但我们可以使用定时器来实现延时。
以下是一个常用的延时函数示例:```cvoid delay(unsigned int ms)while (ms--)//使用定时器产生延时}```在上述延时函数中,使用了一个循环来实现延时。
具体的延时时间是通过循环次数来控制的,ms参数表示延时的毫秒数。
4.串口通信函数串口通信函数用于实现C51单片机与外部设备之间的串口通信。
串口通信可以用于数据传输和调试等应用。
以下是一个常用的串口通信函数示例:```cvoid UART_Init//配置串口参数void UART_SendChar(unsigned char value)//发送一个字符unsigned char UART_ReceiveChar//接收一个字符```在上述示例中,`UART_Init`函数用于配置串口的参数,`UART_SendChar`函数用于发送一个字符,而`UART_ReceiveChar`函数用于接收一个字符。
C语言几种重要的运算符学过汇编的朋友都知道汇编对位的处理能力是很强的,但是C语言也能对运算对象进行按位操作,从而使C语言也能具有一定的对硬件直接进行操作的能力。
位运算符的作用是按位对变量进行运算,但是并不改变参与运算的变量的值。
如果要求按位改变变量的值,则要利用相应的赋值运算。
还有就是位运算符是不能用来对浮点型数据进行操作的。
C51中共有6种位运算符。
位运算一般的表达形式如下:变量1 位运算符变量2位运算符也有优先级,从高到低依次是:"~"(按位取反)→"<<"(左移) →">>"(右移) →"&"(按位与)→"^"(按位异或)→"|"(按位或)表7-1是位逻辑运算符的真值表,X表示变量1,Y表示变量2X Y ~X ~Y X&Y X|Y X^Y0 0 1 1 0 0 00 1 1 0 0 1 11 0 0 1 0 1 11 1 0 0 1 1 0表7-1按位取反,与,或和异或的逻辑真值表利用以前建立起来的实验板,我们来做个实验验证一下位运算是否真是不改变参与变量的值,同时学习位运算的表达形式。
程序很简单,用P1口做运算变量,P1.0-P1.7对应P1变量的最低位到最高位,通过连接在P1口上的LED我们便可以直观看到每个位运算后变量是否有改变或如何改变。
程序如下:#includevoid main(void){unsigned int a;unsigned int b;unsigned char temp; //临时变量P1 = 0xAA; //点亮D1,D3,D5,D7 P1口的二进制为10101010,为0时点亮LEDfor (a=0;a<1000;a++)for (b=0;b<1000;b++); //延时temp = P1 & 0x7; //单纯的写P1|0x7是没有意义的,因为没有变量被影响,不会被编译//执行P1|0x7后结果存入temp,这时改变的是temp,但P1不会被影响。
C语言 main方法什么是main方法?在C语言中,main方法是程序的入口点。
它是一个特殊的函数,用于启动程序并执行主要的逻辑。
当程序被运行时,操作系统会首先调用main方法。
main方法的定义和结构在C语言中,main方法的定义有两种形式:1.int main(void)2.int main(int argc, char *argv[])第一种形式不接受任何参数,而第二种形式接受两个参数:argc和argv。
•argc表示命令行参数的数量。
•argv是一个指向字符指针数组的指针,每个元素都是一个命令行参数的字符串。
以下是一个简单示例:#include <stdio.h>int main(void) {printf("Hello, World!\n");return 0;}在上面的示例中,我们使用了第一种形式的main方法,即不接受任何参数。
程序执行到printf语句时,会输出”Hello, World!“并换行。
最后通过return 0;语句结束main方法。
main方法返回值main方法可以返回一个整数值,通常用于表示程序执行状态或错误码。
一般情况下,返回值为0表示程序正常退出,非零值表示程序发生了错误或异常情况。
以下是一个示例:#include <stdio.h>int main(void) {int result = 42;return result;}在上面的示例中,main方法返回了一个整数值42。
main方法的参数第二种形式的main方法可以接受命令行参数。
命令行参数是在运行程序时通过命令行输入的额外信息。
我们可以在命令行中输入./program arg1 arg2来传递两个参数给程序。
以下是一个示例:#include <stdio.h>int main(int argc, char *argv[]) {printf("Number of arguments: %d\n", argc);for (int i = 0; i < argc; i++) {printf("Argument %d: %s\n", i, argv[i]);}return 0;}在上面的示例中,我们使用了第二种形式的main方法。
c语言入口函数C语言是一种广泛应用的高级编程语言,其入口函数是整个程序的执行的入口和出口。
所以掌握C语言入口函数是学习和应用C语言的基础。
下面我们分步骤阐述C语言入口函数的基本概念、作用和用法。
一、入口函数的基本概念1.入口函数是什么?入口函数是C语言程序的起点,程序在执行之前必须要有一个入口,也就是程序的入口。
在C语言中,一般都会设置main函数作为入口函数。
2.入口函数的作用入口函数的作用是启动程序,其主要功能包括程序的初始化、调用其它函数,以及最终结束程序的运行。
3.入口函数的用法入口函数的用法也很简单,一般是定义一个函数,函数名为main,然后在函数内部进行需要的操作。
接下来我们就介绍一下如何定义main函数。
二、定义main函数1.main函数的声明在C语言中,main函数是程序的入口,同时也是程序的出口,其格式为:int main(void)我们来简单了解一下上面的声明:• int 表示返回值类型为整型,也就是整个程序的运行结果是一个整数。
• main 是函数名,不能修改。
• void 表示函数不接受任何参数。
2.main函数的用法接下来我们就根据上面的声明来定义一个简单的main函数:#include <stdio.h>int main(void){printf("Hello, World!\n");return 0;}到这里,我们已经成功定义了一个简单的main函数。
其作用是在屏幕上输出一个字符串,并返回0。
三、总结通过上面的介绍,我们已经了解到C语言入口函数的基本概念、作用和用法。
在日常学习和应用中,需要我们不断地进行实践和熟练掌握,才能更好地发挥入口函数的作用。
C语⾔⼲货(2):main函数当中的void你真的理解吗刚开始接触C语⾔的时候,会遇到很多语法、运算符、函数等等问题,可能对于刚刚上⼿的朋友来说不太能够理解。
所以今天通过编写代码,来分析⼀下每⾏代码的作⽤,帮助⼤家理解。
⾸先,我们先来写⼀段简单的代码。
代码要求也很简单:创建⼀个整形变量,并且给其赋值,最后显⽰这个变量的值。
#include <stdio.h>int main (void){ int demo; demo = 21; printf('Is '); printf('Lucy\n'); printf('I am %d years old\n',demo); return 0; }看了这段代码之后,如果认为屏幕上能够打印东西,说明我们的理解是对的。
所以运⾏⼀下程序,来看⼀看结果。
运⾏结果运⾏之后可以看到程序输出了两⾏结果:Is LucyI am 21 years old虽然程序没有问题,但是不理解的朋友可能会有以下⼏点问题:1:\n 和 %d 是什么意思2:printf 打印了三个,为什么 Is 和 Lucy 合并到⼀起了3:main 括号当中的 void 是⼲嘛⽤的先不要着急,我们先来了解⼀下每⾏代码的作⽤。
#include <stdio.h>告诉编译器,把 stdio.h 这个头⽂件包含到当前程序当中。
头⽂件中包含了我们的代码所要⽀持的⽂件。
int main (void)函数名main()是⼀个函数名,int表⽰main()函数返回⼀个整数,void表⽰main不带任何参数。
int demo;声明⼀个变量demo,该变量是⼀个整形变量。
demo = 21;给demo赋值,把值21赋值给demo,这样demo就等于是21。
printf('Is '); printf('Lucy\n');调⽤ printf()函数第⼀个printf()函数在我们的计算机屏幕上显⽰ Is ,(is后⾯我打了⼀个空格)光标停留在同⼀⾏。
C语⾔中voidmain和intmain有什么区别1.有⽆返回值void main没有返回值,int main有返回值。
2.返回值类型int main返回int类型的数据。
void main不返回。
但是在C语⾔推荐写法中,建议使⽤int main,因为在有的编译器虽然void main可以通过编译,但在其他编译器就会报错,为了代码拥有更好的可移植性,⼀般写int main代码⽰例。
#include <stdio.h>int main(void){ printf("Hello,World!\n"); return 0;}上述的代码中为int main,返回了⼀个0数据类型为int。
总之在写代码时,⼀个函数要么有返回值,要么没有返回值,没有就⽤void来表⽰。
main函数同样的,在没有返回值时加个void。
有的编译器必须main要有返回值int,那就写成int main。
⾄于什么时候需要那种写法,不必有这种顾虑,你可以⼀律写成int main,然后在函数体中最后加个return 0;就⾏了。
数据类型void:声明函数⽆返回值或参数,声明⽆类型指针,显⽰丢弃运算结果。
(c89标准新增)char:字符型类型数据,属于整型数据的⼀种。
(K&R时期引⼊)int:整形数据,表⽰范围通常为编译器指定的内存字节长。
(K&R时期引⼊)float:单精度浮点型数据,属于浮点数据的⼀种。
(K&R时期引⼊)double:双精度浮点型数据,属于浮点数据的⼀种。
(K&R时期引⼊)。
c语言的用法总结随着经济的迅速发展以及科学技术水平的不断提高,计算机技术发展迅速,成为21世纪的热门技术,在很大程度上促进生产力水平的提高以及经济的发展。
C语言的发展还在进行着,并且不断趋于完善,它具有较多的优点。
下面小编就为大家分享下c语言的用法总结。
c语言的用法总结1函数名: stpcpy功能: 拷贝一个字符串到另一个用法: char *stpcpy(char *destin, char *source);程序例:#include <stdio.h>#include <string.h>int main(void){char string[10];char *str1 = "abcdefghi";stpcpy(string, str1);printf("%s\n", string);return 0;}c语言的用法总结2函数名: strcat功能: 字符串拼接函数用法: char *strcat(char *destin, char *source);程序例:#include <string.h>#include <stdio.h>int main(void){char destination[25];char *blank = " ", *c = "C++", *Borland = "Borland"; strcpy(destination, Borland);strcat(destination, blank);strcat(destination, c);printf("%s\n", destination);return 0;}c语言的用法总结3函数名: strchr功能: 在一个串中查找给定字符的第一个匹配之处\用法: char *strchr(char *str, char c);程序例:#include <string.h>#include <stdio.h>int main(void){char string[15];char *ptr, c = 'r';strcpy(string, "This is a string");ptr = strchr(string, c);if (ptr)printf("The character %c is at position: %d\n", c, ptr-string); elseprintf("The character was not found\n");return 0;}c语言的用法总结4函数名: strcmp功能: 串比较用法: int strcmp(char *str1, char *str2);看Asic码,str1>str2,返回值 > 0;两串相等,返回0程序例:#include <string.h>#include <stdio.h>int main(void){char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";int ptr;ptr = strcmp(buf2, buf1);if (ptr > 0)printf("buffer 2 is greater than buffer 1\n");elseprintf("buffer 2 is less than buffer 1\n");ptr = strcmp(buf2, buf3);if (ptr > 0)printf("buffer 2 is greater than buffer 3\n");elseprintf("buffer 2 is less than buffer 3\n");return 0;}c语言的用法总结5函数名: strncmpi功能: 将一个串中的一部分与另一个串比较, 不管大小写用法: int strncmpi(char *str1, char *str2, unsigned maxlen); 程序例:#include <string.h>#include <stdio.h>int main(void){char *buf1 = "BBB", *buf2 = "bbb";int ptr;ptr = strcmpi(buf2, buf1);if (ptr > 0)printf("buffer 2 is greater than buffer 1\n"); if (ptr < 0)printf("buffer 2 is less than buffer 1\n");if (ptr == 0)printf("buffer 2 equals buffer 1\n"); return 0;}c语言的用法总结6函数名: strcpy功能: 串拷贝用法: char *strcpy(char *str1, char *str2); 程序例:#include <stdio.h>#include <string.h>int main(void){char string[10];char *str1 = "abcdefghi";strcpy(string, str1);printf("%s\n", string);return 0;}c语言的用法总结7函数名: strcspn功能: 在串中查找第一个给定字符集内容的段用法: int strcspn(char *str1, char *str2);程序例:#include <stdio.h>#include <string.h>#include <alloc.h>int main(void){char *string1 = "1234567890";char *string2 = "747DC8";int length;length = strcspn(string1, string2);printf("Character where strings intersect is at position %d\n", length);return 0;}c语言的用法总结8函数名: strdup功能: 将串拷贝到新建的位置处用法: char *strdup(char *str);程序例:#include <stdio.h>#include <string.h>#include <alloc.h>int main(void){char *dup_str, *string = "abcde";dup_str = strdup(string);printf("%s\n", dup_str);free(dup_str);return 0;}c语言的用法总结9函数名: stricmp功能: 以大小写不敏感方式比较两个串用法: int stricmp(char *str1, char *str2);程序例:#include <string.h>#include <stdio.h>int main(void){char *buf1 = "BBB", *buf2 = "bbb";int ptr;ptr = stricmp(buf2, buf1);if (ptr > 0)printf("buffer 2 is greater than buffer 1\n"); if (ptr < 0)printf("buffer 2 is less than buffer 1\n");if (ptr == 0)printf("buffer 2 equals buffer 1\n"); return 0;}c语言的用法总结10函数名: strerror功能: 返回指向错误信息字符串的指针用法: char *strerror(int errnum);程序例:#include <stdio.h>#include <errno.h>int main(void){char *buffer;buffer = strerror(errno);printf("Error: %s\n", buffer);return 0;}c语言的用法总结11函数名: strcmpi功能: 将一个串与另一个比较, 不管大小写用法: int strcmpi(char *str1, char *str2);程序例:#include <string.h>#include <stdio.h>int main(void){char *buf1 = "BBB", *buf2 = "bbb";int ptr;ptr = strcmpi(buf2, buf1);if (ptr > 0)printf("buffer 2 is greater than buffer 1\n");if (ptr < 0)printf("buffer 2 is less than buffer 1\n");if (ptr == 0)printf("buffer 2 equals buffer 1\n");return 0;}c语言的用法总结12函数名: strncmp功能: 串比较用法: int strncmp(char *str1, char *str2, int maxlen); 程序例:#include <string.h>#include <stdio.h>int main(void){char *buf1 = "aaabbb", *buf2 = "bbbccc", *buf3 = "ccc"; int ptr;ptr = strncmp(buf2,buf1,3);if (ptr > 0)printf("buffer 2 is greater than buffer 1\n");elseprintf("buffer 2 is less than buffer 1\n");ptr = strncmp(buf2,buf3,3);if (ptr > 0)printf("buffer 2 is greater than buffer 3\n");elseprintf("buffer 2 is less than buffer 3\n");return(0);}c语言的用法总结13函数名: strncmpi功能: 把串中的一部分与另一串中的一部分比较, 不管大小写用法: int strncmpi(char *str1, char *str2);程序例:#include <string.h>#include <stdio.h>int main(void){char *buf1 = "BBBccc", *buf2 = "bbbccc";int ptr;ptr = strncmpi(buf2,buf1,3);if (ptr > 0)printf("buffer 2 is greater than buffer 1\n");if (ptr < 0)printf("buffer 2 is less than buffer 1\n");if (ptr == 0)printf("buffer 2 equals buffer 1\n");return 0;}c语言的用法总结14函数名: strncpy功能: 串拷贝用法: char *strncpy(char *destin, char *source, int maxlen); 程序例:#include <stdio.h>#include <string.h>int main(void){char string[10];char *str1 = "abcdefghi";strncpy(string, str1, 3);string[3] = '\0';printf("%s\n", string);return 0;}c语言的用法总结15函数名: strnicmp功能: 不注重大小写地比较两个串用法: int strnicmp(char *str1, char *str2, unsigned maxlen); 程序例:#include <string.h>#include <stdio.h>int main(void){char *buf1 = "BBBccc", *buf2 = "bbbccc";int ptr;ptr = strnicmp(buf2, buf1, 3);if (ptr > 0)printf("buffer 2 is greater than buffer 1\n");if (ptr < 0)printf("buffer 2 is less than buffer 1\n");if (ptr == 0)printf("buffer 2 equals buffer 1\n");return 0;}c语言的用法总结16函数名: strnset功能: 将一个串中的所有字符都设为指定字符用法: char *strnset(char *str, char ch, unsigned n); 程序例:#include <stdio.h>#include <string.h>int main(void){char *string = "abcdefghijklmnopqrstuvwxyz"; char letter = 'x';printf("string before strnset: %s\n", string); strnset(string, letter, 13);printf("string after strnset: %s\n", string);return 0;}c语言的用法总结17函数名: strpbrk功能: 在串中查找给定字符集中的字符用法: char *strpbrk(char *str1, char *str2);程序例:#include <stdio.h>#include <string.h>int main(void){char *string1 = "abcdefghijklmnopqrstuvwxyz"; char *string2 = "onm";char *ptr;ptr = strpbrk(string1, string2);if (ptr)printf("strpbrk found first character: %c\n", *ptr); elseprintf("strpbrk didn't find character in set\n"); return 0;}c语言的用法总结18函数名: strrchr功能: 在串中查找指定字符的最后一个出现用法: char *strrchr(char *str, char c);程序例:#include <string.h>#include <stdio.h>int main(void){char string[15];char *ptr, c = 'r';strcpy(string, "This is a string");ptr = strrchr(string, c);if (ptr)printf("The character %c is at position: %d\n", c, ptr-string); elseprintf("The character was not found\n");return 0;}c语言的用法总结19函数名: strrev功能: 串倒转用法: char *strrev(char *str);程序例:#include <string.h>#include <stdio.h>int main(void){char *forward = "string";printf("Before strrev(): %s\n", forward);strrev(forward);printf("After strrev(): %s\n", forward);return 0;}c语言的用法总结20函数名: strset功能: 将一个串中的所有字符都设为指定字符用法: char *strset(char *str, char c);程序例:#include <stdio.h>#include <string.h>int main(void){char string[10] = "123456789";char symbol = 'c';printf("Before strset(): %s\n", string);strset(string, symbol);printf("After strset(): %s\n", string);return 0;}c语言的用法总结21函数名: strspn功能: 在串中查找指定字符集的子集的第一次出现用法: int strspn(char *str1, char *str2);程序例:#include <stdio.h>#include <string.h>#include <alloc.h>int main(void){char *string1 = "1234567890";char *string2 = "123DC8";int length;length = strspn(string1, string2);printf("Character where strings differ is at position %d\n", length);return 0;}c语言的用法总结22函数名: strstr功能: 在串中查找指定字符串的第一次出现用法: char *strstr(char *str1, char *str2);程序例:#include <stdio.h>#include <string.h>int main(void){char *str1 = "Borland International", *str2 = "nation", *ptr; ptr = strstr(str1, str2);printf("The substring is: %s\n", ptr);return 0;}c语言的用法总结23函数名: strtod功能: 将字符串转换为double型值用法: double strtod(char *str, char **endptr);程序例:#include <stdio.h>#include <stdlib.h>int main(void){char input[80], *endptr;double value;printf("Enter a floating point number:");gets(input);value = strtod(input, &endptr);printf("The string is %s the number is %lf\n", input, value); return 0;}c语言的用法总结24函数名: strtok功能: 查找由在第二个串中指定的分界符分隔开的单词用法: char *strtok(char *str1, char *str2);程序例:#include <string.h>#include <stdio.h>int main(void){char input[16] = "abc,d";char *p;/* strtok places a NULL terminatorin front of the token, if found */p = strtok(input, ",");if (p) printf("%s\n", p);/* A second call to strtok using a NULLas the first parameter returns a pointerto the character following the token */p = strtok(NULL, ",");if (p) printf("%s\n", p);return 0;}c语言的用法总结25函数名: strtol功能: 将串转换为长整数用法: long strtol(char *str, char **endptr, int base); 程序例:#include <stdlib.h>#include <stdio.h>int main(void){char *string = "87654321", *endptr;long lnumber;/* strtol converts string to long integer */ lnumber = strtol(string, &endptr, 10);printf("string = %s long = %ld\n", string, lnumber); return 0;}函数名: strupr功能: 将串中的小写字母转换为大写字母用法: char *strupr(char *str);程序例:#include <stdio.h>#include <string.h>int main(void){char *string = "abcdefghijklmnopqrstuvwxyz", *ptr; /* converts string to upper case characters */ptr = strupr(string);printf("%s\n", ptr);return 0;}c语言的用法总结26函数名: swab功能: 交换字节用法: void swab (char *from, char *to, int nbytes); 程序例:#include <stdlib.h>#include <stdio.h>#include <string.h>char source[15] = "rFna koBlrna d";char target[15];int main(void){swab(source, target, strlen(source)); printf("This is target: %s\n", target); return 0;}。
c语言中void main的用法
在C语言中,void main是最常见的main函数定义方式。
但是在使用void main时也需要格外小心,因为它并不是标准的C语言规范在上所标注的方式。
下面,我们来详细一下void main的用法。
一、void main的定义方式
下面是void main的定义方式:
```
void main()
{
//执行代码
}
```
二、编译器是否支持
在标准的C语言中,main函数需要返回一个整型值。
但是某些编译器允许使用void main()的方式定义main函数。
这种方式在一些旧版的编译器中被接受,但在现代标准的C语言中已经不再推荐使用。
三、void main的缺陷
尽管在一些旧版的编译器中可以使用void main()的方式定义main函数,但在C语言标准中这种定义方式是被禁止的。
根据C99标准和
C++11标准,main函数的原型应该是:
```
int main(void)
```
在实际编程中,为了避免可能的兼容性问题,尽量避免使用void main()的方式定义main函数。
四、应该用哪种方式
应该使用int main(void)的方式来定义main函数。
这种方式是标准的C语言规范,并被广泛接受和支持。
此外,它也避免了使用void main()可能会发生的兼容性问题,使得C程序更加稳健和可靠。
五、总结
虽然在历史上有些编译器允许使用void main()的方式来定义main函数,但是在现代的C语言标准中已经被禁止了。
为了避免可能的兼容性问题,我们应该尽量避免使用void main()这种方式来定义main函数,而应该使用标准的int main(void)方式。
这样既符合规范,也能保证程序的稳定性和可靠性。