ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

对C加深理解

2022-02-28 10:04:04  阅读:135  来源: 互联网

标签:10 malloc struct int 理解 加深 变量 指针


一、字符串标准函数

字符串标准函数的原型在头文件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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有