指针变量是用来存储地址的 定义 指针变量 例如:int* p;
int* p; //定义指针变量 p
*p // * 是解引用操作符,间接访问操作符号 (是指向地址的值)
指针大小 一般根据平台 位数 32位 为 4 ,64位 为8
结构体 创建结构体的时候 结尾需要加 ;
例如 sruck Book{char name ; short age;};
初始化 创建对象
struct Book b1={"薯片",21};
三种指向成员的方法
(1)使用指针
struct Book* pb = &b1;
指向成员(1)
(*pb).name
(*pb).price
指向成员(2)
pb->name
pb->price
(2)
b1.name
b1.price
补充:sleep(暂时时间)单位s或ms 取决于系统 暂停程序一段时间 linux系统 来自于库函数<unistd.h>
Sleep(暂时时间) windows系统 来自库函数 <windows.h>
补充:sqrt(对象) 开平方根 数学中的根号 来自库函数 <math.h> #gcc 需要引用头文件math.h 编译时需要在test.c后面加上-lm
补充: 字符串是常量 修改的时候需要用库函数 <string.h> 中的 strcpy(对象,字符串) 将新的字符串 拷贝到对象
字符串比较是否相同 需要使用<string.h>中strcmp(对象,字符串)
memset(对象,指定字符,到第几位)将对象的到第几位的字符修改为指定字符
补充:system("系统命令")执行系统命令 需要引用头文件stdlib.h
注:return 在函数中触发 就不会继续往下走了
注:scanf 一般对象是地址 键盘输入数据回车会在缓冲区留下 \n
例如:键盘输入123456\n scanf会输出123456 \n还在 后续如果getchar() 在缓冲区读取字符的时候 会读到\n
例如 int n = 0; char a[100] = {0}; scanf(“%n%s”, &n, a);
注:continue 是终止本次循环
注:switch 表达式 必须为整形(char会转化为ascii码 也是整形) case 是常量
注:getchar 获取一个你输入的字符串(包括\n),putchar 输出getchar 对象获取的字符串
注:EOF 是文件结束标志(end of file) 默认值是 -1 (crtl -z)
注:printf() 返回值是打印的字符串个数
注:strlen默认返回的是一个无符号数 (unsigned类型)
注:数组在传递的时候是首元素的地址 (通常情况下 数组名都是数组首元素的地址,在sizeof和&中是指整个数组)
注:数组创建的时候,指定数组元素数量使用的常量
注:二维数组创建的时候,必须要指定二维数组的元素数量
常见的库函数<stdio.h>输入输出函数 <string.h>字符串操作函数<unistd.h><windows.h><stdlib.h><math.h>数学函数<time.h>时间/日期函数
函数
嵌套调用:在函数里调用其它函数
链式访问:把一个函数的返回值作为另外一个函数的参数
函数声明:告诉编译器有一个函数叫什么,参数是什么,返回值是什么。无论函数是否定义(一般放在头文件中,引入头文件调用)
函数递归:函数调用自身 (递归存在限制条件 满足时 递归不在继续,每次调用会接近条件直到解除限制)
注:函数定义一般都会写在main函数之前,避免需要声明(在同文件的情况下)
引入自定义头文件的格式 include "文件名"
头文件一般会写使用此格式定义
#ifndef 通常是文件名
#define 通常是文件名
函数声明
endif
作用是避免函数重复调用