C语言 数组类型与数组指针类型

//数组类型与数组指针类型
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void main(){
    printf("\n-------数组类型----------\n");
    {
        //定义一个数组类型
        typedef int Myarr[5];//定义了一个int型有5个元素的数组类型
        //定义一个数组类型变量
        Myarr myarr;
        //数组赋值
        int i = 0;
        for (i = 0; i < 5; i++)
        {
            myarr[i] = i * 2;
        }
        //打印数组的值
        for (i = 0; i < 5; i++)
        {
            printf("%d\n", myarr[i]);
        }
    }
    printf("\n-------数组指针类型①----------\n");
    {
        //首先定义一个数组类型
        typedef int Myarr[5];
        //定义一个数组指针变量  类比: int a; int *pa;
        Myarr * pmyarr = NULL;
        //定义一个数组
        Myarr a;
        //定义一个数组指针
        pmyarr = &a;
        //为数组赋值
        int i = 0;
        for (i = 0; i < 5; i++)
        {
            (*pmyarr)[i] = i + 3;
        }
        //打印数组
        for (i = 0; i < 5; i++)
        {
            printf("%d\n", (*pmyarr)[i]);
        }
    }
    printf("\n-------数组指针类型②----------\n");
    {
        //定义一个数组指针类型
        typedef int(*PArrType)[5];
        //定义数组指针变量
        PArrType parr = NULL;
        int a[5] = { 0 };
        parr = &a;
        //为数组赋值
        int i = 0;
        for (i = 0; i < 5; i++)
        {
            (*parr)[i] = i + 5;
        }
        //打印数组
        for (i = 0; i < 5; i++)
        {
            printf("%d\n", (*parr)[i]);
        }
    }
    printf("\n-------数组指针类型③----------\n");
    {
        //直接定义数组指针变量
        int(*parr)[5];
        int a[5] = { 0 };
        parr = &a;
        //为数组赋值
        int i = 0;
        for (i = 0; i < 5; i++)
        {
            (*parr)[i] = i + 5;
        }
        //打印数组
        for (i = 0; i < 5; i++)
        {
            printf("%d\n", (*parr)[i]);
        }

    }
    system("pause");
}
时间: 2024-11-06 09:28:30

C语言 数组类型与数组指针类型的相关文章

一维数组,二维数组,三维数组,数组与指针,结构体数组,通过改变指针类型改变访问数组的方式

 打印数组中的每个元素,打印每个元素的地址: #include <stdio.h> #include <stdlib.h> void main(void) { int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int *p = a; p < a + 10;p++)  //指针类型决定4个字节 { printf("\n%p,%d", p, *p); } getchar(); } 指针数组 #inclu

go 方法接受者 是指针类型和非指针类型的 区别

go 方法接受者 是指针类型和非指针类型的 区别 非指针类型 package main import "fmt" // 定义接口 type Car interface { GetName() string Run() } // 定义结构体 type Tesla struct { Name string } // 实现接口的GetName()方法 func (t Tesla) GetName() string { t.Name = "test" return t.Na

Swift中对C语言接口缓存的使用以及数组、字符串转为指针类型的方法

由于Swift编程语言属于上层编程语言,而Swift中由于为了低层的高性能计算接口,所以往往需要C语言中的指针类型,由此,在Swift编程语言刚诞生的时候就有了UnsafePointer与UnsafeMutablePointer类型,分别对应为const Type*类型与Type *类型. 而在Swift编程语言中,由于一般数组(Array)对象都无法直接用于C语言中含有指针类型的函数参数(比如:void*),所以往往需要将数组转为指针类型,此外也需要将数组中元素内容存放到连续的存储空间.此外,

c语言中的结构体指针类型的cast

1.我们在c语言中会经常碰到强制类型转换. 在这,我介绍一种结构pointer类型转换,但是有前提(有点类似于c++中的继承中的子父对象的cast). 简单的介绍一下: 首先我们要知道一个结构的指针,并且 在这个结构体中,第一个结构成员必须也是一个结构体(最好是结构体类型). 那么我们可以这个结构体指针转换为指向这个结构体中第一个成员结构体的指针. 直接看代码: ************************************ /* struct transform for struct

C语言 指针基础篇 数组,函数与指针的运用 2 14

下面看看如何在函数中运用指针吧 下面是往函数传入指针的简单操作,不是传入数组的.判断一个a是否大于b是的话给,是的话对其进行操作,不是的话就直接返回. 1 #include <stdio.h> 2 int main(){ 3 int num1,num2,*p1,*p2; 4 p1 = &num1,p2=&num2; 5 scanf("%d%d",&num1,&num2); 6 7 int fun(int *n1,int *n2); //我们在

C# 指针学习笔记之指针类型

大学的时候学过C++.C,最近工作也不是很忙,就想起看看C#中的指针,看看.回忆一下啊,指针的用法,以下学习笔记摘自msdn:指针类型 在不安全的上下文中,类型可以是指针类型以及值类型或引用类型.指针类型声明具有下列形式之一: type* identifier; void* identifier; //allowed but not recommended 下列类型都可以是指针类型: sbyte.byte.short.ushort.int.uint.long.ulong.char.float.d

不同平台下int类型、指针类型的数据大小

不同平台下int类型.指针类型的数据大小 对于int类型数据和指针类型数据的大小,是非常基础的问题. 在一个具体的平台上,确定他们最好的办法就是使用sizeof(type)对其进行判断,返回当前数据类型的大小. 在不同的平台下,int类型和指针类型的数据类型大小时怎样的呢?如果要给出一个统一的答案,自然不可能集齐每个平台,一个个地去试,我们必须从底层进行分析. 数据总线和地址总线 计算机内的数据总线是CPU与外设进行数据交换的通路,而地址总线则是CPU用于寻址的通路. 数据总线的位数决定了CPU

C语言空指针NULL以及void指针

空指针NULL 在C语言中,如果一个指针不指向任何数据,我们就称之为空指针,用NULL表示.例如: int *p = NULL; 注意区分大小写,null 没有任何特殊含义,只是一个普通的标识符. NULL 是一个宏定义,在stdio.h被定义为: #define NULL ((void *)0) (void *)0表示把数值 0 强制转换为void *类型,最外层的( )把宏定义的内容括起来,我们自己进行宏定义时也推荐这么做,防止发生歧义. 总之,p 的值为 0.你可以输出 p 的值: #in

黑马程序员-C语言基础:指针类型与指针和数组、字符串的关系

//指针变量就是用来存储地址的,只能存储地址 格式:  int  *p;  这个p为指针变量:指针变量占8个字节 类型是用来说明这个指针指向的类型: 比如上边的int代表这个指针变量会指向int类型的存储空间: int *p = &a;//这样一句可以写,此时的*只是一个标志,表示这个*只是表示p是个指针: *p = &a;//这样写就错了:此时*p表示取p指向的空间的值: 指针疑问:指针既然都占据8个字节,那么为什么要划分类型, 是因为当用*p指针取值或者赋值的时候,知道该取几个字节,比