大纲:

  主要介绍了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语言基础的更多相关文章

  1. 数据结构的C语言基础

    数据结构的C语言基础 1. 数据输出 printf()函数为格式输出函数,它存在于标准函数库中,在C语言程序中可以直接调用,但程序源文件的开头必须包含以下命令: #include < stdi ...

  2. 数据结构算法C语言实现(六)---2.4一元多项式的表示及相加

    一.简述 利用链表表示稀疏多项式,并基于之前的一些操作(编程实现上还是有所不同的)组合新的操作实现一元多项式的表示及相加. 二.ADT 抽象数据类型一元多项式的定义 ADT Polyomail{ 数据 ...

  3. Object Pascal 语言基础

    Delphi 是以Object Pascal 语言为基础的可视化开发工具,所以要学好Delphi,首先要掌握的就是Object Pascal 语言.Object Pascal语言是Pascal之父在1 ...

  4. 【quick-cocos2d-x】Lua 语言基础

    版权声明:本文为博主原创文章,转载请注明出处. 使用quick-x开发游戏有两年时间了,quick-x是cocos2d-Lua的一个豪华升级版的框架,使用Lua编程.相比于C++,lua的开发确实快速 ...

  5. 01_C语言基础

    内容提要: 1. C语言概述2. 数据类型.运算符与表达式3. C语言程序结构 4. VC6.0使用练习 知识详解01:C语言的历史 1. C语言与其它语言比较 汇编语言: (1).可直接对硬件进行操 ...

  6. Swift语言指南(八)--语言基础之元组

    原文:Swift语言指南(八)--语言基础之元组 元组 元组(Tuples)将多个值组合为一个复合值.元组内的值可以是任何类型,各个元素不需要为相同类型(各个元素之间类型独立,互不干扰--Joe.Hu ...

  7. (cljs/run-at (->JSVM :browser) "语言基础")

    前言  两年多前知道cljs的存在时十分兴奋,但因为工作中根本用不上,国内也没有专门的职位于是搁置了对其的探索.而近一两年来又刮起了函数式编程的风潮,恰逢有幸主理新项目的前端架构,于是引入Ramda. ...

  8. Go语言基础之map

    Go语言基础之map Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现. map map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能 ...

  9. 我的学习目标(目前已初步学习完Java语言基础)

    操作系统.尤其是内存/线程/进程方面 计算机网络协议,重点关注 TCP/UDP/HTTP. 数据结构与算法. 数据库 设计模式,熟练掌握常用的几种设计模式. Java语言基础.熟悉java语言基础,了 ...

随机推荐

  1. 《机器学习实战》-k近邻算法

    目录 K-近邻算法 k-近邻算法概述 解析和导入数据 使用 Python 导入数据 实施 kNN 分类算法 测试分类器 使用 k-近邻算法改进约会网站的配对效果 收集数据 准备数据:使用 Python ...

  2. Composer的简单使用

    .前期准备: 1.下载安装包,https://getcomposer.org/download/ 2.在php.ini文档中打开extension=php_openssl.dll 3.下载php_ss ...

  3. node.js安装与配置

    node.js是一个基于Chrome V8引擎的javascrit运行环境. node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量又高级. node.js的包管理器npm,是全球最大的开源 ...

  4. net core (上)

    net core (上) 本文是基于Windows10的. 下载地址: https://code.visualstudio.com/ insider 版下载地址: https://code.visua ...

  5. postgresql修改数据库名

    alter database abc rename to cba;

  6. GC是如何回收SoftReference对象的

    看Fresco的代码中,有这样的一个类: /** * To eliminate the possibility of some of our objects causing an OutOfMemor ...

  7. untiy3d开发环境搭建和开发准备

    1.到untiy3d官网上下载untiy3d的软件(这里我使用的是个人版的5.3.61f做学习使用) 2.安装vs2012 3.因为unity3d和vs的版本有一定的版本对应关系,我这里使用vs201 ...

  8. 一个好用的压力测试工具tsung

    一个好用的压力测试工具tsung          前段时间一直在忙各种事情,快三周没弄过引擎了,今天有点时间,正好之前写的服务器引擎也到了收尾测试的阶段,于是就研究了下怎么测试服务器压力.      ...

  9. mkcert本地 HTTPS 加密证书生成工具

    软件介绍: mkcert 是一个生成本地 HTTPS 加密证书的工具,一个命令就可以生成证书,不需要任何配置. 下载地址: https://github.com/FiloSottile/mkcert/ ...

  10. go语言简单的soap调用方法

    package main import ( "bytes" "encoding/xml" "fmt" "io" &quo ...