数据结构实用C语言基础
大纲:
主要介绍了C语言中的指针,内存分配,两种传参方式,typedef的简单用法
关于C语言中的指针:
指针变量也称为指针(Pointer)
例如:int* p; 则p为一个指向int类型的指针.
p保存的值是它所指向的int类型的值的地址.
如果我们在声明这个指针变量后,给它赋值,如:
int* p;
int a;
p = &a;//&为取址符号
cout << *p << endl;
则p的值是a的地址,(*p)即为a的值
关于函数参数:
C语言中有两种向函数传递参数的方式:
1)值传递(相当于弄了参数的一个副本)
2)引用传递(相当于使用的是参数本身)
例:
#include <stdlib.h>
#include <cstdio>
int *p3,*p4;
//这个例子比较复杂,但是比较有用,fun函数传递的两个参数,一个是值传递的指针,一个是引用传递的指针
void fun(int* p1,int* &p2) {
printf("%d %d %d %d\n",*p1,*p2,*p3,*p4);
*p1 = 25;
printf("%d %d %d %d\n",*p1,*p2,*p3,*p4);
p1 = p3;
printf("%d %d %d %d\n",*p1,*p2,*p3,*p4);
*p2 = 100;
printf("%d %d %d %d\n",*p1,*p2,*p3,*p4);
p2 = p4;
printf("%d %d %d %d\n",*p1,*p2,*p3,*p4);
} int main() {
p3 = (int*)malloc(sizeof(int));
p4 = (int*)malloc(sizeof(int));
*p3 = 10;
*p4 = 20;
int *p1,*p2;
p1 = (int*)malloc(sizeof(int));
p2 = (int*)malloc(sizeof(int));
*p1 = 5,*p2 = 15;
fun(p1,p2);
printf("%d %d %d %d\n",*p1,*p2,*p3,*p4);
}
结果:
5 15 10 20
25 15 10 20
10 15 10 20
10 100 10 20
10 20 10 20
25 20 10 20
typedef的几种基础用法:
1. 为现有类型起个别名
typedef int dataType;
2. 给复合类型起个别名
1) 给数组起别名
typedef int intList[100];
那么
intList a,b;
相当于
int a[100],b[100];
2) 给指针起别名
typedef int* intPointer;
那么
intPointer pa;
相当于
int* pa;
3. 有关结构体的typedef
typedef struct Node {
int a,b;
}strNode,*ptrNode;
相当于给Node起了个别名,叫strNode,并且给指向Node的指针类型起了名叫ptrNode
这样写之后,以下两句话就分别等价于:
1)strNode A;//Node A;
2)prtNode pA,pB;//Node *pA,*pB;
malloc函数简介:
malloc的全称是memory allocation,中文叫动态内存分配。
malloc(unsigned int num_bytes)
以上的malloc函数向系统申请分配num_bytes个字节的空间,如果分配成功,则返回一个指向被分配内存地址的第一个位置的指针,否则返回NULL。
由于malloc返回的指针类型为void*,所以在使用这个函数时,我们时常要对分配好的空间进行类型强制转换,转成我们需要的类型。
例:
int* p;//创建一个指向int类型的指针
p = (int*)malloc(sizeof(int) * 100);//给p分配连续 100*4 byte的内存空间
数据结构实用C语言基础的更多相关文章
- 数据结构的C语言基础
数据结构的C语言基础 1. 数据输出 printf()函数为格式输出函数,它存在于标准函数库中,在C语言程序中可以直接调用,但程序源文件的开头必须包含以下命令: #include < stdi ...
- 数据结构算法C语言实现(六)---2.4一元多项式的表示及相加
一.简述 利用链表表示稀疏多项式,并基于之前的一些操作(编程实现上还是有所不同的)组合新的操作实现一元多项式的表示及相加. 二.ADT 抽象数据类型一元多项式的定义 ADT Polyomail{ 数据 ...
- Object Pascal 语言基础
Delphi 是以Object Pascal 语言为基础的可视化开发工具,所以要学好Delphi,首先要掌握的就是Object Pascal 语言.Object Pascal语言是Pascal之父在1 ...
- 【quick-cocos2d-x】Lua 语言基础
版权声明:本文为博主原创文章,转载请注明出处. 使用quick-x开发游戏有两年时间了,quick-x是cocos2d-Lua的一个豪华升级版的框架,使用Lua编程.相比于C++,lua的开发确实快速 ...
- 01_C语言基础
内容提要: 1. C语言概述2. 数据类型.运算符与表达式3. C语言程序结构 4. VC6.0使用练习 知识详解01:C语言的历史 1. C语言与其它语言比较 汇编语言: (1).可直接对硬件进行操 ...
- Swift语言指南(八)--语言基础之元组
原文:Swift语言指南(八)--语言基础之元组 元组 元组(Tuples)将多个值组合为一个复合值.元组内的值可以是任何类型,各个元素不需要为相同类型(各个元素之间类型独立,互不干扰--Joe.Hu ...
- (cljs/run-at (->JSVM :browser) "语言基础")
前言 两年多前知道cljs的存在时十分兴奋,但因为工作中根本用不上,国内也没有专门的职位于是搁置了对其的探索.而近一两年来又刮起了函数式编程的风潮,恰逢有幸主理新项目的前端架构,于是引入Ramda. ...
- Go语言基础之map
Go语言基础之map Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现. map map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能 ...
- 我的学习目标(目前已初步学习完Java语言基础)
操作系统.尤其是内存/线程/进程方面 计算机网络协议,重点关注 TCP/UDP/HTTP. 数据结构与算法. 数据库 设计模式,熟练掌握常用的几种设计模式. Java语言基础.熟悉java语言基础,了 ...
随机推荐
- 初次学习DropWizard框架——解决maven打包时出现没有主清单属性的问题
笔者因为公司的项目需要,开始接触DropWizard框架,照着官网https://www.dropwizard.io/0.9.2/docs/getting-started.html撸了一遍. 工具为I ...
- Nacos深入浅出(二)
如果你的服务已经能正常跑起来,个人建议可以先感受下nacos的魅力,也就是怎么使用吧 直接上代码 @Controller @NacosPropertySource(dataId = "spr ...
- LDAP理论知识
整理改编自: https://www.cnblogs.com/yjd_hycf_space/p/7994597.html http://blog.51cto.com/407711169/1439623 ...
- Hexo瞎折腾系列(8) - 添加评论系统
前言 Hexo的NexT主题本身就集成了一些评论系统,多说啊之类的已经关闭服务的略过不提,目前比较多人用的有畅言.来必力livere.Gitment.Gitalk.Disqus等. 我刚用的评论系统的 ...
- 《SQL 进阶教程》 case:在 UPDATE 语句里进行条件分支
1.对当前工资为30万日元以上的员工,降薪10%:2.对当前工资为25万日元以上且不满28万日元的员工,加薪20% update salaries set salary = case when sal ...
- C# Monitor与线程同步
Monitor对象(C#知识点总结系列:4.C#中Monitor和Lock以及区别) 1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁, ...
- NET Core学习方式(视频)
NET Core学习方式(视频) ASP.NET Core都2.0了,它的普及还是不太好.作为一个.NET的老司机,我觉得.NET Core给我带来了很多的乐趣.Linux, Docker, Clou ...
- java wait(),notify(),notifyAll()
wait()的作用是使当前执行代码的线程进行等待,此方法是Object类的方法,该方法用来将当前线程置入“预执行队列”中,并且在wait()所带的代码处停止执行,直到接到通知或被中断位置.在调用wai ...
- WebApi访问方式配置
之前公司使用webapi开发项目,只知道怎么用对于怎么配置一直不了解,最近这段时间没什么事然后自己建一个webapi项目,只知道怎么用对于怎么配置一直不了解,最近这段时间没什么事然后自己建一个weba ...
- ThreadLocal源码解析,内存泄露以及传递性
我想ThreadLocal这东西,大家或多或少都了解过一点,我在接触ThreadLocal的时候,觉得这东西很神奇,在网上看了很多博客,也看了一些书,总觉得有一个坎跨不过去,所以对ThreadLoca ...