一 :数据类型
1.float类型,在输出的时候可以使用 .数字 来把浮点数精确到小数点后几位,比如 printf("%.3f",float)精确到小数点后三位,不足补0
2.字符串接收 定义个字符数组
char str[]="";
scanf("%s",&str); //遇到空格就停止接收
gets(str); //可以接收所有字符
printf("%s",str);
3.在向一个函数传入数组,直接传入数组名,其实就相当于传入的是数组的首地址指针;在函数中可以用数组形式接收int arr[],也可以用指针形式接收int * arr;
#include <stdio.h> #define four 4; void add(int arr[]); //也可以是 void add(int * arr); int main(void) { int arr[four]={4,5,6,7}; add(arr); } void add(int * arr) { //在操作数组时 arr[i]==*(arr+i) int i; for(i=0;i<4;i++) { printf("%d",arr[i]); //也可以是 printf("%d",*(arr+i)); } }
二:结构体
struct books{ int num; char name[21]; float price;
}
2.1. 结构体内存占用
2.1.1.结构体所占的空间可以见到的认为是各个成员所占内存空间之和
int 4bit, char 1bit, float 4bit
所以结构体books的大小大概是29bit
2.1.2.实际是最大成员变量所占空间的最小整倍数
在结构体books中最大成员变量是int和float,都是4bit,4的最小倍数要比29大,所以就是32,
因此实际占得大小是32bit
2.3 typedef 给类型重新指定名称
typedef int TOINT
int a=10; => TOINT a=10;
更改结构体的名称
1.typedef struct books BKS;
2. typedef struct books{
int num;
char name[21];
float price;
}BKS;
2.3 赋值
2.3.1. 最特殊的是给结构体中的数组赋值
错误写法: BKS.name = "C primer Plus";
正常写法: strcpy(BKS.name,"C primer Plus");
或者在定义结构体的时候使用指针指定名称
typedef struct books{ int num; char * name; float price;
}BKS;
这样就可以
先申请内存空间malloc
BKS.name = (char*) malloc(50*sizeof(char));
strcpy(BKS.name,"C primer Plus");
2.3.2. 结构体变量可以直接赋值给另一个结构体变量
BKS a={......}; BKS b;
b = a;
2.4 数组与结构体
定义一个结构体数组,存放结构体
BKS arr[5] = { {....}, {....}, {....} }
访问的话就是,比如访问name : arr[0].name