C语言基础-函数

函数(本身有代码,程序执行先将函数参数入栈,再运行函数代码)


int main(int argc, char** argv);

argc表示参数的个数,argv里边存储各个参数
;第二个参数中argv[0]为自身运行目录路径和程序名,argv[1]指向第一个参数、argv[2]指向第二个参数

#include <stdio.h>
int main(int argc, char *argv[ ])
{
printf("%s\n",argv[0]);
return 0;
}

主函数main并非程序的真正入口!
在编译器对你的工程文件进行编译时,它是先找到你的main函数,然后根据main函数类型,把一段前缀入口程序预先编译,再让它去调用main函数.当你的main函数需要参数时,它就编译有参数main函数调用,反之则编译无参数main函数调用.
所以编译器是自动识别你的main函数类型的!

void main无返回值,部分编译器可以通过。

默认库

int fprintf ( FILE *fp, char * format, … );

函数声明:int printf(const char *format, ...)
函数调用:printf("<格式化字符串>", <参量表>);

format – 字符串(或字符数组指针),包含了要被写入到标准输出 stdout 的文本。
它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化 。

    转换说明符:
  %c 字符   %s 字符串
      %d 、%i        有符号十进制整数 %4d 四个为单位,右对齐
      %u             无符号十进制整数
      %f             浮点数(包括float和doulbe)
      %o   八进制整数     %x  十六进制整数
      %p   指针

int fscanf ( FILE *fp, char * format, … );

scanf("%?",&n);
把接收到的数据存入到变量n的内存中,
如果变量为数组或者指针,则不需要&



putchar()、puts()、gets()、getc()

putchar():输出字符数据,puts()输出字符串数据。

gets()、getc()

文件流如fgetc()、fpuc()

读文件到内存

int fgetc(fp) :从fp所指的文件中获取下一个字符,出错返回EOF,否则返回所读的字符。

int fputc(int char, FILE *stream);

char *fgets(char *buf, int bufsize, fp);
*buf: 字符型指针,指向用来存储所得数据的地址。bufsize: 整型数据,指明存储数据的大小。

fpintg(fp,’’%?",变量名)

#include <stdio.h>
int main()
{
    FILE *fp; //文件流。
if((fp=fopen("test.txt","r"))==NULL)
    printf("%s","错误");
//char c;
//while((c=fgetc(fp))!=EOF)
  //  printf("%c",c);

char f[10];
fgets(f,10,fp);
puts(f);

fclose(fp);
        return 0;
}

size_t strlen(char const* str):size_t也就是无符号整数

计算指定字符串 str 的长度,但不包括结束字符(即 null 字符:’\0’)


LT小于 :LE小于等于 GT大于 GE大于等于 EQ等于 NE不等于


math.h

sqrt():计算非负实数的平方根

abs(int x);求整数x的绝对值
fabs(double x);求浮点数x的绝对值.

pow(a,n):a的n次方,a和n还有返回结果都是double类型



string.h

strcpy(新,旧):复制字符串的,接受两个参数,一个是被复制字符串,另一个新字符串


strcmp(str1,str2)
string compare(字符串比较),用于比较两个字符串并根据比较结果返回整数。

两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止

当s1<s2时,返回为负数;
当s1=s2时,返回值= 0;
当s1>s2时,返回正数。



stdlib.h

malloc/realloc/free 申请、释放内存:

malloc分配指定大小的内存
void * malloc(long NumBytes):分配NumBytes个字节,并返回指向该内存的指针。分配失败返回一个空指针。


realloc 是在原有的基础上在开辟若干空间

指针名=(Elemtype *)realloc(原指针名,新大小)
①先释放原来指针 所指内存区域
②按照新大小重新分配空间
③将原有数据从头到尾拷贝到新分配的内存区域
④并返回该内存区域的首地址。即重新分配存储器块。

void free(void *ptr):C语言中释放内存空间的函数.

通常与申请内存空间的函数malloc()结合使用,可以释放由 malloc()、calloc()、realloc() 等函数申请的内存空间。




(Elemtype *) ;可将malloc返回的类型(void * )
 强制转换为(Elemtype *)类型

用法:指令名=(Elemtype )malloc( nsizeof(Elemtype))

指针名 ⇔ 指针 指向内存的首地址(如数组指针的基地址)



发布了46 篇原创文章 · 获赞 15 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_41850194/article/details/105315890