c语言之指针数组理解一
来源:互联网 发布:windows 安装程序 编辑:程序博客网 时间:2024/05/20 14:26
直接给出demo和内存图进行分析
//打印指针数组/*这里为什么要定义为二级指针:首先,数组本身就是一个一级指针,在加上定义的是指针数组,也就是存储的数据是指针,所以是二级指针*/void PrintArryData(char** arry, int cnt){if (arry == NULL)return;for (int i = 0; i < cnt; i++){//arry:是数组的内存块地址,总共有cnt块,arry+i是指向下一个内存块printf("i= %d value = %s\n", i, *(arry + i));}}//对指针数组进行排序void SortArryData(char** arry, int cnt){if (arry == NULL)return;char* tmp = NULL;for (int i = 0; i < cnt; i++){for (int j = i + 1; j < cnt; j++){if (strcmp(*(arry + i), *(arry + j)) < 0){tmp = *(arry + j);*(arry + j) = *(arry + i);*(arry + i) = tmp;}}}}void main(){/*定义了一个指针数组定义了一个指针数组,数组的有4个内存快,每个内存快的数据类型是指针可以看图1来认识指针数组的内存结构*/char* arry[] = { "rose_grils_1", "rose_grils_2", "rose_grils_3", "rose_grils_4" };//可以求出指针数组arry所占内存块的总量int totalSize = sizeof(arry);//因为这是指针数组,每个内存空间存储的是指针,这里可以求出每个内存块的大小int singleSize = sizeof(char*);//这里用总内存大小除以单个内存块的大小,可以求出总共有多少个内存块int cnt = totalSize / singleSize;//打印二级指针PrintArryData(arry, cnt);printf("*****************************\n");SortArryData(arry, cnt);PrintArryData(arry, cnt);system("pause");}
运行结果:
内存分析图:
0 0
- c语言之指针数组理解一
- c语言之指针数组理解二
- c语言之指针数组理解三
- c语言之指针理解一
- c语言之多级指针理解一
- c语言之指针与数组理解一(数据拷贝)
- 【C语言】理解指针数组 数组指针 函数指针
- C语言核心之数组和指针详解一
- c语言基础之指针与一维数组
- c语言之指针和数组(一)
- c语言之数组指针
- C语言之指针数组
- C语言 数组与指针的理解
- C语言 数组与指针的理解
- C语言指针和数组理解
- C语言中数组指针的理解
- C语言指针与数组 理解
- 理解C语言的数组和指针
- viterbi算法——通俗解释
- 100行代码 CircleImageView
- C语言编程函数编写一般原则
- java web 乱码总结
- 排序算法-交换排序_冒泡排序
- c语言之指针数组理解一
- hadoop完全分布式集群+Win Eclipse+Hbase+Hive+Zookeeper+Sqoop+SPARK试验机平台
- 欢迎使用CSDN-markdown编辑器
- UVA 247 Calling Circles(Floyd算法传递闭包)
- BroadcastReceiver
- 60款很酷的 jQuery 幻灯片演示和下载
- SCCB协议Verilog HDL程序
- 读DL论文心得之RCNN
- ios常用的工具 插件