指针数组做参
2013-11-02 22:29
211 查看
//由于之前学指针没有学好,这几天做实验的时候,一直纠结在指针数组上,最后终于弄懂了。现做个小总结
//直接贴上例子
通过debug发现
![](https://img-blog.csdn.net/20131102215944015?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3RvcnlvZmxpdV95dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
对于ap1指针数组来讲
ap1这个数组的地址是0x0018FF34
因为这是一个指针数组,这个数组里边存了很多指针,这些指针指向了
ap1[0]指向了0x0042203C I
ap1[1]指向了0x00422038 AM
ap1[2]指向了0x00422034 A
ap1[3]指向了0x00422028 FRESHMAN
ap1[4]指向了0x00422024 !
PS:看来动态分配也遵循字节对齐方式,但为什么地址也是从高位到地位呢,也是跟压栈有关?
在exchange(ap1,ap2,5)的时候,传递的参数是指针数组ap1的地址0x0018FF34,不能够写成exchange(&ap1,&ap2[],5)
引用数组指针跟引用数组元素是一样的。。
我在做这个的时候,一直把指针的指针和指针数组搞混了,我觉得指针的指针也可以用到指针数组上面去,但是经过很多次的实验,一直没有弄成功,或者说其实就是不能够将其用在这里边来。
//直接贴上例子
//声明一个指针数组ap1,并将其初始化,声明指针数组ap2,通过传递ap1和ap2,将ap2中的每个元素指向ap1中对应每个元素指向的堆空间
#include <stdio.h> #include <stdlib.h> #include <string.h> void exchange(char *Ap1[],char* Ap2[],int size){ int i; for(i=0;i<size;i++){ Ap2[i]=Ap1[i]; } } void print_ap(char* ap1[],char* ap2[], int size) { int i=0; for(;i<size;i++){ printf(ap1[i]); printf("\t"); printf(ap2[i]); printf("\n"); } } int main(){ char* ap1[5]={"I","AM","A","FRESHMAN","!"}; char* ap2[5]; int flag; int i=0; exchange(ap1,ap2,5); print_ap(ap1,ap2,5); }
通过debug发现
对于ap1指针数组来讲
ap1这个数组的地址是0x0018FF34
因为这是一个指针数组,这个数组里边存了很多指针,这些指针指向了
ap1[0]指向了0x0042203C I
ap1[1]指向了0x00422038 AM
ap1[2]指向了0x00422034 A
ap1[3]指向了0x00422028 FRESHMAN
ap1[4]指向了0x00422024 !
PS:看来动态分配也遵循字节对齐方式,但为什么地址也是从高位到地位呢,也是跟压栈有关?
在exchange(ap1,ap2,5)的时候,传递的参数是指针数组ap1的地址0x0018FF34,不能够写成exchange(&ap1,&ap2[],5)
引用数组指针跟引用数组元素是一样的。。
我在做这个的时候,一直把指针的指针和指针数组搞混了,我觉得指针的指针也可以用到指针数组上面去,但是经过很多次的实验,一直没有弄成功,或者说其实就是不能够将其用在这里边来。
相关文章推荐
- java基础4 循环
- Redie系列-JAVA与redis整合- redisclient的使用
- 基础01背包
- Android学习篇章35-Service基础-广播开机启动服务
- hud-2191多重背包问题
- JVM调优总结(六)-分代垃圾回收详述2
- Ubuntu upstart job解析
- Javascript中this、prototype、constructor的理解
- java基础3
- Delphi取整函数
- fafu—1174 编辑距离 DP
- ActiveMQ, Qpid, HornetQ and RabbitMQ in Comparison
- 如何判断Android设备是否为模拟器
- fn_listextendedproperty返回不完整的问题
- 编程技术好文章
- linux下使用select实现精确定时器
- 寻找和为定值的多个数
- java基础2
- java基础知识
- Croc Champ 2013 - Round 2 (Div. 2 Edition)-C Weird Gam