数据结构实用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语言基础,了 ...
随机推荐
- atom 插件 python语法验证linter-flake8-------填坑
python的语法相对于一般语言的语法比较严格.对于刚刚从前端入门python的我来说,有时候代码写完了,然后报错,好多语法错误.所以这个时候一个好的语法验证插件是很好的.linter-flake8这 ...
- 监控数组与foreach绑定-Knockout.js
html: <h2>Your seat reservations</h2> <table> <thead> <tr> ...
- 牛客假日团队赛2 D.亲和数对
链接: https://ac.nowcoder.com/acm/contest/924/D 题意: 求在给定区间[start,end]内所有的亲和数对. 亲和数的定义:对于数对(A,B),如果A的除了 ...
- python 5 条件判断
条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现: age = 20 if age >= ...
- 关于codeblock 为什么不能调试
最近codeblock不能调试了,一开始还以为把断点放在了函数里面,所以不行. 代码短,就自己看了, 有时候实在不行,真的要调试,那怎么办?其实很多时候是你的文件名的问题. 1.project的路径必 ...
- 省厅报件7.0 读取mdb 生成xml 文件
using System;using System.Collections.Generic;using System.Data;using System.Data.OleDb;using System ...
- jvm 内存dump、gc查看、线程死锁,jmap、jstack、jstat
1. jstat 这个命令对于查看Jvm的堆栈信息很有用.能够查看eden,survivor,old,perm等heap的capacity,utility信息 对于查看系统是不是有能存泄漏以及 ...
- JDBC和分包
JDBC(Java Data Base Connectivity,java数据库连接) JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写 ...
- SQLAlchemy的基本使用
一.介绍 SQLAlchemy是一种ORM(Object-Relational Mapping)框架,用来将关系型数据库映射到对象上.该框架建立在DB API之上,将类和对象转化成SQL,然后使用AP ...
- Java VS Python 应该先学哪个?
http://blog.segmentfault.com/hlcfan/1190000000361407 http://www.tuicool.com/articles/fqAzqi Java 和 P ...