【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系
一、相关概念的介绍什么是Makefile?怎么书写Makefile?竟然有工具可以自
1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个voi
摘要:一直以来都觉得printf似乎是c语言库中功能最强大的函数之一,不仅因为它能格式化输出,更在于它的参数个数没有限制,要几个就给几个,来者不拒。printf这种对参数个数和参数类型的强大适应性,让人产生了对它进行探索的浓厚兴趣。关键字:printf, 可变参数 1. 使用情形 int a =10;double b = 20.0;char *str = "Hello world";printf
很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束、在程序的某个地方用exit() 结束程序、用户通过Ctrl+C或Ctrl+break操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理。方法就 是用atexit()函数来注册程序正常终止时要被调用的函数。 atexit()函数的参数是一个函数指
已知strcpy函数的原型是 char *strcpy(char *strDest, const char *strSrc); 其中strDest是目的字符串,strSrc是源字符串。 (1)不调用C++/C的字符串库函数,请编写函数 strcpy char *strcpy(char *strDest, const char *strSrc); { assert((strDest!=
#include <stdio.h>#include <stdlib.h>#include "link.h"#define LEN sizeof(struct stu)//声明结构体typedef struct stu{int num;char name[10];struct stu *next;}TYPE;//链表创建函数,返回类型为结构体指针类型TYPE * cre
概述 在很多情况下,尤其是读别人所写代码的时候,对 C语言声明的理解能力变得非常重要,而C语言本身的凝练简约也使得C语言的声明常常会令人感到非常困惑,因此,在这里我用一篇的内容来集中阐述一下这个问题。 问题:声明与函数 有一段程序存储在起始地址为 0的一段内存上,如果我们想要调用这段程序,
二分覆盖问题、最短路径问题、最小代价生成树等问题的求解方案。1.1 最优化问题 本章及后续章节中的许多例子都是最优化问题( optimization problem),每个最优化问题都包含一组限制条件( c o n s t r a i n t)和一个优化函数( optimization function),符合限制条件的问题求解方案称为可
sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。函数原型:int scanf( const char *format [,argument]... );其中的format可以是一个或多个:{%[*] [width] [{h|l|I64|L}] type|'_'|'\t'|'\n'|非%符号},
gethostbyname和gethostbyaddr这两个函数仅仅支持IPv4,getaddrinfo函数能够处理名字到地址以及服务到端口这两 种转换,返回的是一个sockaddr结构的链表而不是一个地址清单
最近在写source code时需要在数组的buffer小时重新申请一块buffer,故找了一些资料,乖乖,竟然原指针还可以“漂移”。。。。。。realloc 原型:extern void *realloc(void *mem_address, unsigned int newsize);。
循环链表的运算与单链表的运算基本一致,所不同的有以下几点:(1)在建立一个循环链表时,必须使其最后一个节点的指针指向表头节点,而不是像单链表那样置为NULL。此种情况适用于在最后一个节点后插入一个新节点。(2)判断是否到表尾采用判断该节点链域的值是否是表头节点的方法,当链域值等于表头指针时,说明已到表尾,而不是像单链表那样判断链域值是否为NULL。
C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如: 3+5,6+8称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为 表达式1,表达式2逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。
read函数只是一个通用的读文件设备的接口。是否阻塞需要由设备的属性和设定所决定。一般来说,读字符终端、网络的socket描述字,管道文件等,这些文件的缺省read都是阻塞的方式。如果是读磁盘上的文件,一般不会是阻塞方式的。但使用锁和fcntl设置取消文件O_NOBLOCK状态,也会产生阻塞的read效果。
char * strtok ( char *string, const char *delimiters);Sequentially truncate string if delimiter is found. Ifstringis notNULL, the function scansstringfor the first
ioctl函数本函数影响由fd参数引用的一个打开的文件。#include<unistd.h>intioctl( int fd, int request, .../* void *arg */ );返回0:成功 -1:出错第三个参数总是一个指针,但指针的类型依赖于request参数。我们可以把和网络相关的请求划分为6类:
//如何将一个ASCII码的数据,分解为其两位16进制字符型数据,保存在一个字符数组中#include <stdio.h>#include <string.h>#include
Filename: main.c * Description: * Version: 1.0 * Created: 2011年07月26日 12时27分27秒 * Revision: none * Compiler: gcc * Author: YOUR NAME (), * Company: *
在c/c++标准库中,变参函数很特别。printf, fprintf, sprintf等都属于变参函数。如果自己要写类似的参数可变的函数,通常会用到下面三个函数: #include <stdarg.h>void va_start(va_list ap, last);type va_arg(va_list ap, type);void va_end(va_list ap);一般的用法是这样:va_list args; //声明变量va_start(args, fmt); //开始解析。args指向fmt后面的参数TYPE var = va_arg(args, TYPE); //取下一
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>int main(int argc, char *argv[]){ char buf[100]; char str[20] = "helloworld 100"; int num; sscanf(str,"%s %d",buf,&num); printf("the buf:%s %d\n",buf,num); return 0;}和
fseek函数是用来设定文件的当前读写位置.函数原型: int fseek(FILE*fp,long offset,int origin);函数功能:把fp的文件读写位置指针移到指定的位置.fseek(fp,20,SEEK_SET);意思是把fp文件读写位置指针从文件开始后移20个字节.ftell函数是用来获取文件的当前读写位置;函数原型:long ftell(FILE *fp)函数功能:得到流式文件的当前读写位置,其返回值是当前读写位置偏离文件头部的字节数.ban=ftell(fp);是获取fp指定的文件的当前读写位置,并将其值传给变量ban.fseek函数与ftell函数综合应用:分析:可
1、简介在Linux中,并不存在exec()函数,exec指的是一组函数,一共有6个,分别是:#include <unistd.h>extern char **environ;int execl(const char *path, const char *arg, ...);int execlp(const char *file, const char *arg, ...);int execle(const char *path, const char *arg, ..., char * const envp[]);int execv(const char *path, char
这是一个很简单的程序void main(){int i=8;printf("%d,%d,%d,%d\n", ++i, --i, i++, i--);}
所谓的16位32位64位系统是由cpu决定的,由机器指令的寻址、寄存器位数决定的 os受cpu的限制,但在32位的cpu下16位的os也可以跑(就向上面提到的所谓纯dos) 很多os是向前兼容的,就是使以前的程序也能运行,如果编译器本身是16位时代做的,那么os会提供一个模拟16位的子环境供这个编译器使用 int和void*长度应该是一样的(1
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号