对C加深理解
作者:互联网
一、字符串标准函数
字符串标准函数的原型在头文件string.h中
1.输入字符串:gets(字符数组名);该函数输入的字符串中允许包含空格,而scanf()不允许
2.输出字符串:puts(字符数组名)
3.求字符串长度:strlen(字符数组名)
二、除法
1.除数、被除数都是整数,结果也是整数。结果不能整除的情况下直接丢掉小数
2.除数、被除数有一个小数,结果也是小数,并且是double类型
三、数组
1. 声明数组a[11]表示有11个数,即a[0]到a[10]
2. 内层外层循环的变量不能相同
四、结构体
1.理解
结构体其实是将数组、变量、指针变量等做了个封装,成为我们定义的一个新的数据类型。我们就可以把封装起来的内容作为整体对待。新数据类型每定义一个变量,就可以同时存储多个变量、数组等。
2.使用
1 struct queue 2 { 3 int data[100];//队列的主体,用来存储内容 4 int head;//队首 5 int tail;//队尾 6 };
* struct是结构体关键字,queue是为结构体起的名字
* 定义结构体的变量时不能忽略掉struct,例如:struct queue q;
* 末尾有分号
* 通常main函数外面
3. 成员运算符 "."
声明的结构体变量用来访问结构体内部成员。例如:
1 struct queue 2 { 3 int data[100];//队列的主体,用来存储内容 4 int head;//队首 5 int tail;//队尾 6 }; 7 8 9 struct queue q; 10 q.head=1; 11 q.tail=1;
4.结构体指针运算符 "->"
指向结构体的指针用来访问结构体内部成员。例如:
1 struct node 2 { 3 int data; 4 struct node *next; 5 } 6 struct node *p; 7 p=(struct node *)malloc(sizeof(struct node)); 8 scanf("%d",&a); 9 p->data=a; //数据存储到当前节点的data域中 10 p->next=NULL;
五、指针和malloc函数
1.指针
(1)指针存储着一个内存空间的地址
(2)定义一个指针
int a; int * p;
定义一个指针,只需在变量前面加一个"*"号。这里的指针只能存储一个**存放整数的内存空间**的地址
(3)指针如何存储地址
p = &a;
"&"叫取地址符。这样整形指针p获得了整型变量a的地址。理解为指针p指向了整型变量a
(4)可以通过指针p来操作变量a
例如,输出变量a的值
1 int a=10; 2 int * p; 3 p=&a; 4 printf("%d",* p);
这里的 * 号是间接访问运算符。作用是取得指针p所指向的内存中的值。
(5)C语言中 * 号有三个用途
* 乘号。加减乘除
* 声明指针变量。在定义指针变量时使用,如:int * p;
* 取得指针所指向的内存中的值。简介访问运算符。例如printf("%d",* p);
2.malloc函数
(6)在内存中存储整数10
* int a=10;
* malloc(4);
(7)使用malloc函数会从内存中申请分配指定字节大小的内存空间。此处申请的是4个字节。不知道int类型4个字节还可以通过sizeof(int)获取int类型所占字节数。申请好4个字节空间后,就需要用一个指针来指向这个空间。
1 int * p; 2 p=(int * )malloc(sizeof(int));
需要注意的是,malloc函数返回类型是void * 类型。void * 表示未确定类型的指针。在C语言和C++,可被强制转换为任何其他类型的指针。此处我们将其强制转化为整形指针
(8)指针存储的是某空间地址,那为什么分不同类型的指针呢?
是为了让系统知道某空间应该取多少个连续内存作为一个数据。
(9)例子
存储整数10的代码如下
1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 int *p; 6 p=(int * )malloc(sizeof(int)); 7 * p=10; 8 printf("%d",* p); 9 return 0; 10 }
(10)为什么要用如此复杂的办法存储数据?
预先的方法我们必须预先准确的知道所需变量的个数,也就是说我们必须定义出所有变量。定义一百个,程序就只能存储一百个。通过malloc函数我们可以在程序运行的过程中根据实际情况来申请空间
最后:个人觉得指针和malloc函数谁都离不开谁。malloc申请的内存需要指针指示,而指针用来指示一个不确定的空间才发挥了真正作用。
六、其他
getchar();和system("pause")都可以用来防止程序结果一闪而过。后者包含在头文件stdlib.h中
标签:10,malloc,struct,int,理解,加深,变量,指针 来源: https://www.cnblogs.com/wy0526/p/15944321.html