C语言

  • 知识基础
  • 控制语句
  • 函数
  • 输入输出
  • 指针和数组
  • 用户自定义数据类型
  • 文件操作

文章目录

  • C语言
  • 一、指针
    • 1.指针的含义
    • 2.指针变量
    • 3.指针作为形参
  • 二、数组
    • 1.数组的定义
    • 2.数组与指针的联系
    • 3.动态内存分配
    • 4.多维数组、指针数组、多重指针
  • 练习

  • C程序中数据存储在哪里呢?在计算机中操作系统会给每一个进程分配一定的存储空间(这个存储空间是经过抽象的虚拟地址空间,其结构一致),一个数据就被存储在一个存储单元(存储单元的大小由数据类型决定);
  • 程序运行时如何通过变量名找到相应的存储单元的呢?实际上,在编译阶段之后,程序并不通过变量名确定数据的位置,而是通过存储单元在内存中的地址来寻找数据(这种由变量名到地址操作的转换由编译程序完成);
  • 什么是地址?操作系统对于分配给进程的空间的每一个byte都进行编号,这样的话一个编号就对应一字节的存储单元,程序只需要知道数据的编号和数据类型就能够找到想要的数据并进行操作了;这里的编号就是地址。

综上所述,我们在使用C语言编程过程中对变量的命名在经过编译之后就是直接对地址内容的操作了(通过寄存器中的地址直接找到存储单元),也就是说变量==地址内容
通过变量名对变量的访问称为直接访问

#mermaid-svg-KzGev0Grkdzb8giG {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-KzGev0Grkdzb8giG .error-icon{fill:#552222;}#mermaid-svg-KzGev0Grkdzb8giG .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-KzGev0Grkdzb8giG .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-KzGev0Grkdzb8giG .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-KzGev0Grkdzb8giG .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-KzGev0Grkdzb8giG .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-KzGev0Grkdzb8giG .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-KzGev0Grkdzb8giG .marker{fill:#333333;stroke:#333333;}#mermaid-svg-KzGev0Grkdzb8giG .marker.cross{stroke:#333333;}#mermaid-svg-KzGev0Grkdzb8giG svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-KzGev0Grkdzb8giG .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-KzGev0Grkdzb8giG .cluster-label text{fill:#333;}#mermaid-svg-KzGev0Grkdzb8giG .cluster-label span{color:#333;}#mermaid-svg-KzGev0Grkdzb8giG .label text,#mermaid-svg-KzGev0Grkdzb8giG span{fill:#333;color:#333;}#mermaid-svg-KzGev0Grkdzb8giG .node rect,#mermaid-svg-KzGev0Grkdzb8giG .node circle,#mermaid-svg-KzGev0Grkdzb8giG .node ellipse,#mermaid-svg-KzGev0Grkdzb8giG .node polygon,#mermaid-svg-KzGev0Grkdzb8giG .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-KzGev0Grkdzb8giG .node .label{text-align:center;}#mermaid-svg-KzGev0Grkdzb8giG .node.clickable{cursor:pointer;}#mermaid-svg-KzGev0Grkdzb8giG .arrowheadPath{fill:#333333;}#mermaid-svg-KzGev0Grkdzb8giG .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-KzGev0Grkdzb8giG .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-KzGev0Grkdzb8giG .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-KzGev0Grkdzb8giG .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-KzGev0Grkdzb8giG .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-KzGev0Grkdzb8giG .cluster text{fill:#333;}#mermaid-svg-KzGev0Grkdzb8giG .cluster span{color:#333;}#mermaid-svg-KzGev0Grkdzb8giG div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-KzGev0Grkdzb8giG :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

变量名
地址
变量
int i = 2;
printf("%d", i);//直接访问

一、指针

1.指针的含义

指针==地址,地址就像是指向一个变量(也就是一个存储单元)的箭头,可以根据箭头找到变量。
C语言中允许对内存空间的直接操作,也就是说,只要用户知道一个地址就可以直接去访问该地址的内容(将用户的指针值写入寻址寄存器找到存储单元),这种访问方式称为间接访问*(指针值)

#mermaid-svg-vDR1ZCPqhJtehbbN {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-vDR1ZCPqhJtehbbN .error-icon{fill:#552222;}#mermaid-svg-vDR1ZCPqhJtehbbN .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-vDR1ZCPqhJtehbbN .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-vDR1ZCPqhJtehbbN .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-vDR1ZCPqhJtehbbN .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-vDR1ZCPqhJtehbbN .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-vDR1ZCPqhJtehbbN .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-vDR1ZCPqhJtehbbN .marker{fill:#333333;stroke:#333333;}#mermaid-svg-vDR1ZCPqhJtehbbN .marker.cross{stroke:#333333;}#mermaid-svg-vDR1ZCPqhJtehbbN svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-vDR1ZCPqhJtehbbN .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-vDR1ZCPqhJtehbbN .cluster-label text{fill:#333;}#mermaid-svg-vDR1ZCPqhJtehbbN .cluster-label span{color:#333;}#mermaid-svg-vDR1ZCPqhJtehbbN .label text,#mermaid-svg-vDR1ZCPqhJtehbbN span{fill:#333;color:#333;}#mermaid-svg-vDR1ZCPqhJtehbbN .node rect,#mermaid-svg-vDR1ZCPqhJtehbbN .node circle,#mermaid-svg-vDR1ZCPqhJtehbbN .node ellipse,#mermaid-svg-vDR1ZCPqhJtehbbN .node polygon,#mermaid-svg-vDR1ZCPqhJtehbbN .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-vDR1ZCPqhJtehbbN .node .label{text-align:center;}#mermaid-svg-vDR1ZCPqhJtehbbN .node.clickable{cursor:pointer;}#mermaid-svg-vDR1ZCPqhJtehbbN .arrowheadPath{fill:#333333;}#mermaid-svg-vDR1ZCPqhJtehbbN .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-vDR1ZCPqhJtehbbN .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-vDR1ZCPqhJtehbbN .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-vDR1ZCPqhJtehbbN .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-vDR1ZCPqhJtehbbN .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-vDR1ZCPqhJtehbbN .cluster text{fill:#333;}#mermaid-svg-vDR1ZCPqhJtehbbN .cluster span{color:#333;}#mermaid-svg-vDR1ZCPqhJtehbbN div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-vDR1ZCPqhJtehbbN :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

等于
指针值
地址
变量
int i = 2;
printf("%d ", *(&i));//间接访问
//& 取地址;* 解引用
//如果 &i == 0x0f000011
printf("%d ", *(0x0f000011));
//输出结果 为 2 2

2.指针变量

指针值的三种出现方式:

  • 使用&操作符,得到一个变量的地址;
  • 用户输入一个合法的指针值;
  • 经过编译之后,自动定位的寄存器中的地址;

其中,对编译器自动定位的地址,用户不需要关心,系统对变量的定位对用户是透明的,用户对变量名直接操作就是对一个地址内容直接操作;

对于前两种方式得到一个地址之后,如何来存储呢?
指针变量:存放地址的变量;

#mermaid-svg-wrXGEG0CMlHzgCPu {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-wrXGEG0CMlHzgCPu .error-icon{fill:#552222;}#mermaid-svg-wrXGEG0CMlHzgCPu .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-wrXGEG0CMlHzgCPu .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-wrXGEG0CMlHzgCPu .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-wrXGEG0CMlHzgCPu .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-wrXGEG0CMlHzgCPu .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-wrXGEG0CMlHzgCPu .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-wrXGEG0CMlHzgCPu .marker{fill:#333333;stroke:#333333;}#mermaid-svg-wrXGEG0CMlHzgCPu .marker.cross{stroke:#333333;}#mermaid-svg-wrXGEG0CMlHzgCPu svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-wrXGEG0CMlHzgCPu .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-wrXGEG0CMlHzgCPu .cluster-label text{fill:#333;}#mermaid-svg-wrXGEG0CMlHzgCPu .cluster-label span{color:#333;}#mermaid-svg-wrXGEG0CMlHzgCPu .label text,#mermaid-svg-wrXGEG0CMlHzgCPu span{fill:#333;color:#333;}#mermaid-svg-wrXGEG0CMlHzgCPu .node rect,#mermaid-svg-wrXGEG0CMlHzgCPu .node circle,#mermaid-svg-wrXGEG0CMlHzgCPu .node ellipse,#mermaid-svg-wrXGEG0CMlHzgCPu .node polygon,#mermaid-svg-wrXGEG0CMlHzgCPu .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-wrXGEG0CMlHzgCPu .node .label{text-align:center;}#mermaid-svg-wrXGEG0CMlHzgCPu .node.clickable{cursor:pointer;}#mermaid-svg-wrXGEG0CMlHzgCPu .arrowheadPath{fill:#333333;}#mermaid-svg-wrXGEG0CMlHzgCPu .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-wrXGEG0CMlHzgCPu .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-wrXGEG0CMlHzgCPu .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-wrXGEG0CMlHzgCPu .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-wrXGEG0CMlHzgCPu .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-wrXGEG0CMlHzgCPu .cluster text{fill:#333;}#mermaid-svg-wrXGEG0CMlHzgCPu .cluster span{color:#333;}#mermaid-svg-wrXGEG0CMlHzgCPu div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-wrXGEG0CMlHzgCPu :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

指针名
等于
变量名
地址1
指针变量
地址2
变量

如上图,有以下访问操作

操作 内容 说明
变量名 变量值 直接访问
&变量名 地址2 取址操作符的作用
—— —— ——
指针名 指针值 直接访问,可以存储地址2
*(地址2) 变量值 间接访问
*(指针名) 变量值 间接访问
—— —— ——
&指针名 地址1 可以用多重指针存储地址1

程序中可操作的均为变量名/指针名,以及操作符& *

指针变量的定义:基类型 *指针名
指针变量是一类特殊的变量,其数据类型有两个部分:

  • * 确定变量为指针类型,存储内容为一个地址,对一个机器其地址的大小是确定的,32位机器的地址长度为32b(也就是一个int的大小);
  • 基类型确定指针指向的空间的数据类型,基类型保证了对指针的移动,增减的操作的正确性。
int a;//普通变量
int *p;//指针变量p,指向一个整型空间,以四字节为单位处理p存储的地址指向的存储单元
a = 999;//直接引用,a对应存储单元直接设为999
p = &a;//直接引用,p对应存储单元直接设为a的地址
*p = 1;//间接引用,使得指针p指向的存储单元(即a)设为1
printf("%d", a); //输出 1

3.指针作为形参

函数的定义中要设置形参列表,指针类型同样是一种数据类型可以作为函数的形参出现,函数声明中有基类型 * 形参指针名
在函数调用语句中,传递的实参应该是基类型的一个地址,(实参可以是指针变量或者直接取地址得到的常量)被调用函数会在调用栈中复制一份这个地址,这样的间接访问能够实现对调用函数中的变量值进行编辑;

#mermaid-svg-zMXANulndTIztkCN {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-zMXANulndTIztkCN .error-icon{fill:#552222;}#mermaid-svg-zMXANulndTIztkCN .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-zMXANulndTIztkCN .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-zMXANulndTIztkCN .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-zMXANulndTIztkCN .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-zMXANulndTIztkCN .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-zMXANulndTIztkCN .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-zMXANulndTIztkCN .marker{fill:#333333;stroke:#333333;}#mermaid-svg-zMXANulndTIztkCN .marker.cross{stroke:#333333;}#mermaid-svg-zMXANulndTIztkCN svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-zMXANulndTIztkCN .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-zMXANulndTIztkCN .cluster-label text{fill:#333;}#mermaid-svg-zMXANulndTIztkCN .cluster-label span{color:#333;}#mermaid-svg-zMXANulndTIztkCN .label text,#mermaid-svg-zMXANulndTIztkCN span{fill:#333;color:#333;}#mermaid-svg-zMXANulndTIztkCN .node rect,#mermaid-svg-zMXANulndTIztkCN .node circle,#mermaid-svg-zMXANulndTIztkCN .node ellipse,#mermaid-svg-zMXANulndTIztkCN .node polygon,#mermaid-svg-zMXANulndTIztkCN .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-zMXANulndTIztkCN .node .label{text-align:center;}#mermaid-svg-zMXANulndTIztkCN .node.clickable{cursor:pointer;}#mermaid-svg-zMXANulndTIztkCN .arrowheadPath{fill:#333333;}#mermaid-svg-zMXANulndTIztkCN .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-zMXANulndTIztkCN .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-zMXANulndTIztkCN .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-zMXANulndTIztkCN .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-zMXANulndTIztkCN .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-zMXANulndTIztkCN .cluster text{fill:#333;}#mermaid-svg-zMXANulndTIztkCN .cluster span{color:#333;}#mermaid-svg-zMXANulndTIztkCN div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-zMXANulndTIztkCN :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

变量名
&变量名
传参
形参指针名
地址1
变量
地址常量
形参指针值
地址2
#mermaid-svg-6Uy4bONPKGtJ1aV1 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .error-icon{fill:#552222;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .marker.cross{stroke:#333333;}#mermaid-svg-6Uy4bONPKGtJ1aV1 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .cluster-label text{fill:#333;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .cluster-label span{color:#333;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .label text,#mermaid-svg-6Uy4bONPKGtJ1aV1 span{fill:#333;color:#333;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .node rect,#mermaid-svg-6Uy4bONPKGtJ1aV1 .node circle,#mermaid-svg-6Uy4bONPKGtJ1aV1 .node ellipse,#mermaid-svg-6Uy4bONPKGtJ1aV1 .node polygon,#mermaid-svg-6Uy4bONPKGtJ1aV1 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .node .label{text-align:center;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .node.clickable{cursor:pointer;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .arrowheadPath{fill:#333333;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .cluster text{fill:#333;}#mermaid-svg-6Uy4bONPKGtJ1aV1 .cluster span{color:#333;}#mermaid-svg-6Uy4bONPKGtJ1aV1 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-6Uy4bONPKGtJ1aV1 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

指针名
等于
传参
形参指针名
地址2
指针变量
地址1
变量
形参指针值
地址3

可以发现在指针的传递过程中,地址被复制了多份并存储在不同的存储单元中,并且有不同的名字,但对这些指针变量进行解引用,操作的均为目标数据的数据单元

C语言——指针和数组相关推荐

  1. c语言指针数组课件,C语言指针与数组教程课件.ppt

    C语言指针与数组教程;教学要求;本章主要内容;引子;#include void swap ( int x, int y ) { printf("调用时:x地址为:%p, 值为:%d\n&qu ...

  2. C语言 指针和数组区别 - C语言零基础入门教程

    目录 一.前言 二.指针和数组区别 1.通过 sizeof 获取大小 a.计算数组大小 b.计算指针大小 2.指针和数组赋值方式不同 a.指针赋值 b.数组赋值 3.指针是指针变量,数组是指针常量 三 ...

  3. c语言指针和数组的联系

    c语言指针与数组 **一.指针与一维数组** 1.一维数组的存储方式 2. 对一维数组名的理解 3. 数组下标和指针的关系 4.一位数组名与取数组首地址的区别 **二.指针与二维数组** 1.二维数组 ...

  4. C语言中指针与数组的区别,C语言 指针与数组的详解及区别

    C语言 指针与数组的详解及对比 通俗理解数组指针和指针数组 数组指针: eg:int( *arr)[10]; 数组指针通俗理解就是这个数组作为指针,指向某一个变量. 指针数组: eg:int*arr[ ...

  5. 指针c语言与数组,C语言指针与数组

    C语言指针与数组 数组的下标应该从0还是1开始? 我提议的妥协方案是0.5,可惜他们未予认真考虑便一口回绝    -- Stan Kelly-Bootle 1. 数组并非指针 为什么很多人会认为指针和 ...

  6. c语言指针与数组的深入理解

    引言:本篇再一次写到指针,学过c语言的都知道,指针是初学c语言时候遇到的一个比较难搞的知识点.你尽管可以想的简单,但是其实如果去用的话,没有一个更加深入的理解,那么后续的学习到数据结构就会艰难无比. ...

  7. c语言指针数组 难点总结,C语言指针与数组的难点分析.pdf

    C语言指针与数组的难点分析,c语言指针数组,c语言二维数组指针,c语言指针数组初始化,c语言函数指针数组,c语言数组与指针,c语言结构体数组指针,c语言指向数组的指针,c语言字符串数组指针,c语言数组 ...

  8. c 语言 指针 指向数组,C 指向数组的指针

    您可以先跳过本章,等了解了 C 指针的概念之后,再来学习本章的内容. 如果您对 C 语言中指针的概念有所了解,那么就可以开始本章的学习.数组名是一个指向数组中第一个元素的常量指针.因此,在下面的声明中 ...

  9. C语言指针和数组的天生姻缘

    指针和数组的天生姻缘 以指针的方式来访问数组 指针和下标访问数组的本质 数组和指针并不是相等的 从内存角度理解指针访问数组的实质 指针和数组类型的匹配问题 以指针的方式来访问数组 数组元素使用时不能整 ...

  10. C语言指针、数组与sizeof运算符

    指针.数组与sizeof运算符 指针.数组与sizeof运算符 指针.数组与sizeof运算符 Sizeof是C语言的一个运算符,sizeof的作用是用来返回()里面的变量或者数据类型占用的内存字节数 ...

最新文章

  1. 查看JDK的历史版本
  2. APUE学习笔记-11.5线程终止
  3. 史上最萌的统计学入门书,快来看看长啥样
  4. 财务大数据比赛有python吗-Python去做大数据开发,真的有前景吗?
  5. 【CV秋季划】人脸识别经典难题介绍,抗遮挡,跨年龄,异质源,少样本等
  6. 什么是parquet文件?
  7. php增删改查参数化,JPA之使用JPQL语句进行增删改查
  8. python简单超级马里奥游戏下载大全_Python实现超级玛丽游戏系列教程02玛丽走跑...
  9. spring 集成 Hibernate4.3.X org.hibernate.service.jta.platform.spi.JtaPlatform异常
  10. rgb灯板Android程序,【图片】RGBW智能小夜灯程序则最近搞这玩意硬件真难搞【技术宅吧】_百度贴吧...
  11. UCI糖尿病数据利用逻辑回归算法进行训练和预测
  12. nginx反向代理实践:将某个指定的域名代理到指定的服务
  13. 《思考力---引爆无限潜能》书摘(一)
  14. 六边形格子地图的基本实现
  15. 如何关闭苹果手机自动扣费_手机自动扣费?三招教你关闭
  16. 如何用python处理excel中时间重合_python读取Excel文件中的时间,并计算时间间隔...
  17. 工件表面图案正反及混料检测流程
  18. Spring Boot整合Redis缓存(Lettuce)
  19. 机器人唱歌bgm_Soul app里面机器人匹配的那首bgm是什么呀?好好听!!!求玩过soul的大神告知!!...
  20. 聚观早报 | 茅台市值超过腾讯位列第一;三星正研发智能戒指

热门文章

  1. 正版伤害世界搭建服务器教程,伤害世界Hurtworld服务器架设图文教程_快吧单机游戏...
  2. Unity 简单的伤害数字显示
  3. 河南省第十届省赛 Intelligent Parking Building
  4. Spring框架面试精华知识
  5. 自组织神经网络SOM——MATLAB
  6. Access 错了,还是我傻了
  7. Linux 学习 十三单元
  8. Pycharm+Selenium+Chrome配置,自动打开谷歌浏览器并访问百度页面
  9. 剑三千岛湖服务器是不是维护了,剑网3千岛湖公共事件 温泉抗倭图文教学
  10. mysql空闲等待时间导致的问题的解决方案