数组指针的三种定义方法

用 typedef 定义一个数组类型

有 typedef 是类型,没有是变量

数组类型 typedef int A[8]; 数组类型,int  + 8个确定的变量

                //typedef int (A)[8];

                A b;//int b[8]    //去了typedef,b替换到A的位置

//数组指针, 指针数组
//指针数组,它是数组,每个元素都是指针
//数组指针,指向数组的指针

//[]的优先级比*高
char *a[] = {"aaaaa", "bbbbb", "cccccc"};
int main(int argc, char *argv[])
//argc 传参的个数(包括可执行程序)argv:指针数组,指向输入的参数

//数组指针,它是指针,指向一个数组的指针
//数组指针,指向一维数组的整个数组,而不是首元素地址
//定义数组指针变量



1.先定义数组类型,根据类型定义指针变量

 

int a[10] = {0};
typdef int A[10];       //[10]代表步长
                        //数组指针和指针的区别:
                        //数组指针的步长是sizeof(int)*10;指针的步长是sizeof(int)
A *p = NULL;            //p数组指针类型的变量!!!!!!
p = &a                  // p = a;警告,a代表首元素地址,a和&a一样,最终也是当&a处理
for(i = 0; i < 10; i++)
{
    //a[];
    //p = &a;
    //*p = *&a ->a;
    (*p)[i] = i+1;
}
for(i = 0; i < 10; i++)
{
    printf("%d, ", (*p)[i]);
}


2.先定义数组指针类型,根据类型定义变量


//和指针数组写法很类似,多了()
//()和[]优先级一样,左往右    //*p[3]  指针数组;(*p)[]  数组指针   区别
//()有指针,他是一个指针,[]
//指向数组的指针,有typedef,他是一个数组指针类型 

int a[10] = {0};
typedef int(*P)[10];
P q;                        //数组指针变量
q = &a;
for(i = 0; i < 10; i++)
{
    (*p)[i] = i+1;
}
for(i = 0; i < 10; i++)
{
    printf("%d, ",(*p)[i]);
}


3.直接定义数组指针变量


//和指针数组写法很类似,多了()
//()和[]优先级一样,左往右
//()有指针,他是一个指针,[]
//指向数组的指针,没有typedef,他是一个数组指针变量

int a[10] = {0};
int(*q)[10];                //q数组指针变量
q = &a;
for(i = 0; i < 10; i++)
{
    (*p)[i] = i+1;
}
for(i = 0; i < 10; i++)
{
    printf("%d, ",(*p)[i]);
}


//数组指针的定义
 

1.
int a[10] = {0};
typedef int A[10];
A *p1 = &a;            //A *p1; p1 = &a;

2.
typedef int (*P)[10];
p q2 = &a;            //P q2; q2 = &a;

3.
int (*q3)[10];
q3 = &a;                //q3 = &a;

 

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值