备忘录
学python学了一年,回来重写c语言代码,发现好多基础知识忘记了,因此记录下方便自己日后看
1,C语言中 单引号’ ’ 与 双引号" "区别
python中双引号单引号没区别,怎么用都行。
但是C语言中 字符用单引号,字符串用双引号。
举例:
‘a’ 表示 字符常量
”a“表示字符串 字符串中除了含有字符 ‘a’ 之外,还含有末尾结束符‘\0’ 字符串是用数组表示的
2,结构体 struct
解释:
结构体是一种数据类型,与int,char等数据类型是一个意思。
区别在于 int, char 属于C语言自带的基本数据类型,拿来就可以直接用,并且不可拆分。
而结构体属于复杂数据类型,需要我们根据具体需求进行自定义。一般来说,结构体其中包含多个变量。
举例:
struct stu{
char name[10]; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
};
那么,已知结构体是一种数据类型,类似与int,char。自然就想到其可以自定义变量:结构体变量
举例:
struct stu stu1, stu2;
结构体成员的赋值是通过 [ . ] 来进行赋值
stu1.age = 12;
也可以整体赋值
stu2 = { "Tom", 12, 18, 'A', 136.5 };
但是我查结构体讲解时,看到别人资料说 ”不过整体赋值仅限于定义结构体变量的时候,在使用过程中只能对成员逐一赋值,这和数组的赋值非常类似。“
但是我自己进行尝试的时候,发现非定义结构体变量的时候 同样可以整体赋值 ,因此这里还有点疑问。
最后要注意的一点:结构体是一种自定义的数据类型,不占内存空间;结构体变量才包含了实实在在的数据,需要内存空间来存储。
3,typedef的用法
typedef 用于给数据类型起一个别名,用的比较多的是结构体,可以少写一些东西。
举例:
typedef oldName newName;
给数据类型 int 起别名
typedef int INTEGER;
INTEGER a, b;
给数据类型 struct 起别名
typedef struct stu{
char name[20];
int age;
char sex;
} STU;
定义结构体变量的时候就可以简化了
原来:struct stu stu1,stu2;
重命名后: STU stu1,stu2;
需要注意的是,如果看一些数据结构的教材什么,会发现很多代码开始都是这样写的:
这里的Status 以及 OK 实际上已经是宏定义过了的
4,char *name 与char name [10]
编程中我们经常会遇到向程序输入一个字符串的情况。
此时,我们会有两种选择:
一是定义一个字符指针,并把该字符串首字符的地址传给他;
二是定义一个字符数组,并把字符串存入该字符数组中。
两种方式都行,但是第一种 name 是指针,代表一个地址,是不能改的
第二种是字符数组, name是可以改的