多维数组与指针

一、多维数组元素的地址

1.a代表二维数组首元素的地址,此时的首元素指首行所有元素所成的组,即a+1代表第一行的首地址

2.a[0]代表a[0]行0列元素地址,即&a[0][0]

二、数组指针

1.指向数组的指针:比如int a[10],此时&a是指向数组长度为10的一维数组的指针,其基类型为int [10],占8 个字节

int *p[10]为指针数组,里面装了十个指针,size计算为80

int (*p)[10]为数组指针,P中只能装元素个数为10的一维数组的地址

二维数组:

指向函数的指针:函数的函数名,即为函数的入口地址

比如:

int add(int a,int b)
{
    return a +b;
}

int main(void)
{
    int (*pfn)(int a,int b) = NULL;
    pfn = add;
    return 0;
}

 pfn指向add,int为指针的基类型(函数指针主要目的是为了降低程序耦合性)

qsort函数:快速排序

(数组首元素地址,数组元素个数,一个元素所占字节个数,描述比较大小关系,其返回值为int型) 

三、指针数组和指向指针的指针

void getMem(char **p)
{
    *p = malloc(100);
}

void fn(int *n)
{
    *n += 10;
}

int main(void)
{
    char *s;
    getMem(&s);
    strcpy(s,"Hello");
    puts(s);
    return 0;
}

若getMem(s)未取地址,则s为野指针,s的基类型为char *型,指针传参时,形参需要一个指针*P来接收,getMem函数中,char *为基类型,* 只是为了说明p 为指针

2.指针数组

   当一个指针的数组作为实参传递时,对应的形参为指针的指针

  • 15
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值