一、数组与指针有什么关系

(1)地址

数组名就是一个地址,指向一个数组的开端。

从实验结果我们可以看出前三个地址都是一样的,都是数组的开始地址,而最后一个是数组的第二个元素,因为是整型数据,地址加4。

那么0[a] 1[a] 2[a]...n[a]又代表了什么

0[a]=a[0] 1[a]=a[1] n[a]=a[n];

为什么会这样呢 对比上方代码可知:

n[a]=*(n+a)     *(n+a)=*(a+n)    *(a+n)=a[n];

#include <stdio.h>
int main() {
int a[] = { ,,,, };
int *p = a+;
printf("%d\n", *p++);
printf("%d\n", *++p);
printf("%d\n", (*p)++);
printf("%d\n", ++(*p)); }

举例指针在数组中的使用:

#include <stdio.h>
int main() {
int *p, a[], i;
p = a;
for (i = ;i < ;i++)
scanf_s("%d", p++);
printf("\n\n");
for (p = &a[];p < a + ;)
printf("%d ", *p++);
return ;
}

#include <stdio.h>
int main()
{
int a[][] = { ,,,,,,,, }, *p;
for (p = a[];p < a[] + ;p++) //p=&a[0][0]
printf("%d", *p);
return ;
}

#include <stdio.h>
int main()
{
int a[][] = { ,,,,,,,,,,, };
int(*p)[];
p = a;
int i, j;
for (i = ;i < ;i++)
{
for (j = ;j < ;j++)
printf("%d", p[i][j]);
printf("\n");
}
return ;
}

#include <stdio.h>
int *fun(int *x, int *y)
{
if (*x < *y)
return x;
else
return y;
}
main()
{
int a = , b = , *p, *q, *r;
p = &a; q = &b;
r = fun(p, q);
printf("%d,%d,%d\n", *p, *q, *r);
}

03关于C的数组指针的更多相关文章

  1. [C++ Primer Plus] 第7章、函数(一)程序清单——递归,指针和const,指针数组和数组指针,函数和二维数组

    程序清单7.6 #include<iostream> using namespace std; ; int sum_arr(int arr[], int n);//函数声明 void ma ...

  2. C++语言中数组指针和指针数组彻底分析

    #################################                              ##       基本知识               ##        ...

  3. C语言基础 (9) 数组指针

    复习 只要把地址拿到就能这么操作.. (这里是合法的地址,不是野指针) 只有定义变量后,此变量的地址才是合法的地址 野指针就是保存没有意义地址的指针变量 操作野指针变量本身不会有任何问题 操作野指针所 ...

  4. C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用

    类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...

  5. 问题:C++ 删除数组指针实用 delete []变量 汇编怎么实现的?

    问题:C++ 删除数组指针实用  delete []变量    汇编怎么实现的?

  6. 指针数组 vs 数组指针

        指针数组,故名思义,就是指针的数组,数组的元素是指针:     数组指针,同样,就是直想数组的指针.     简单举例说明:     int *p[2]; 首先声明了一个数组,数组的元素是in ...

  7. c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针

    1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...

  8. C/C++中的指针数组和数组指针

    1. 指针数组 定义:int *p[n],由于[]的优先级高于*,p和[]结合成一个数组,该数组的元素存储的是int类型的指针,由于数组内容是指针,因此p+1的步长是sizeof(int*),在32位 ...

  9. C++中,指针数组和数组指针

    这俩兄弟长得实在太像,以至于经常让人混淆.然而细心领会和甄别就会发现它们大有不同. 前者是指针数组,后者是指向数组的指针.更详细地说. 前: 指针数组;是一个元素全为指针的数组. 后: 数组指针;可以 ...

随机推荐

  1. Linux文件系统中的inode节点详细介绍

    这篇文章主要介绍了Linux文件系统中的inode节点,详细讲解了inode是什么.inode包含的信息.inode号码的相关资料等,需要的朋友可以参考下 一.inode是什么? 理解inode,要从 ...

  2. C++11智能指针 share_ptr,unique_ptr,weak_ptr用法

    0x01  智能指针简介  所谓智能指针(smart pointer)就是智能/自动化的管理指针所指向的动态资源的释放.它是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动 ...

  3. Grid Layout 注释

    .wrapper {  display: grid;/*定义一个块级的网格容器*/  grid-template-columns: repeat(3, 1fr); /*表示平均分为3列*/  grid ...

  4. Java进程和线程

    进程是资源分配和任务调度的基本单位, 进程就是包含上下文切换的程序执行时间总和=CPU加载上下文环境+CPU执行+CPU保存上下文环境,可以理解为时间片段: 进程的颗粒度太大了,将进程分块,按照a,c ...

  5. countdownlatch 和 CyclicBarrier 和 Semaphore

    cdl用的是aqs,共享的是aqs那个volatile的state,阻塞线程列表用的也是aqs的 cb用的是reentrantlock+condition,当然rel用的也是aqs不过不同的是用的是互 ...

  6. AssetBundle自动标签、打包

    using System;using System.Collections.Generic;using System.IO;using UnityEditor;using UnityEngine; / ...

  7. shiro学习笔记 (一)shiro的简介

    shirio的功能 Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境.Shiro可以帮助我们完成:认证.授权.加密.会话管理.与Web集成.缓存等 ...

  8. Mybaties学习

    基于现在Mybatis 我没有学习太多,就基于简单的增删改查进行基础学习. 学习资源来自    http://www.cnblogs.com/xdp-gacl/p/4261895.html 1  引入 ...

  9. Python 基础day3

    1.简述bit,byte,kb,MB,GB,TB的关系 1TB=1024GB;   1GB=1024MB ;  1MB=1024kb: 1kb=1024byte ; 1byte=8bit 2.简述as ...

  10. os与操作系统进行交互,sys解释器相关,random随机数,shutil解压和压缩

    1.os 与操作系统相关 对文件的处理 对路径的处理 import os#主要用于与操作系统进行交互 掌握: print(os.makedirs('a/b/c'))#创建目录 可用递归创建 print ...