二级指针做输入的四种内存模型(一)

匿名 (未验证) 提交于 2019-12-03 00:22:01
二级指针做输入的第一种内存模型:
#include<stdio.h> int main() {     char *buffer[]={"111","333","222"}; }

在上面的代码中buffer[ ]是不是一个数组呢?很明显是。只不过buffer[ ]中的每一个元素都是指针,也就是我们所说的指针数组。
首先我们进行打印,代码如下:

#include<stdio.h> int main() {     int i,num;     char *buffer[]={"111","333","222"};     num=sizeof(buffer)/sizeof(buffer[0]);//求数组长度     for(i=0;i<num;i++)     {         printf("%s"\n,buffer[i]);         //或printf("%s"\n,*(bufer+i)。因为buffer[i]是不是等价于*(buffer+i)呢?     } }

我们如何对上面的元素进行排序呢?代码如下:

这样我们是不是通过交换指针实现了排序?也就是说交换了buffer中的元素。

在上述代码中,我们都是在main()中实现打印及排序,但为了使程序的可移植性更高,我们是不是应该自定义函数,实现上述功能呢?

自定义打印代码如下:

}
int main(){
int num;
char *buffer[]={"111","333","222"};

这样我们就实现了自定义函数打印二级指针的值。接下来我们进行排序:

int main()
{
int num;
char *buffer[]={"111","333","222"};

这样我们就实现了自定义函数实现二级指针的排序。内存模型图如下:


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!