C/C++二级指针的三种模型(一)
来源:互联网 发布:网络安全教育开题报告 编辑:程序博客网 时间:2024/04/29 07:59
第一个角度:站在c/c++编译器的角度,对形参,如指针类型,c编译器只会把他大当做一个指针变量来看。(分配四个字节的内存)
第二个角度:我们只有在是用指针所指向的内存空间的时候我们才去关心内存是一维的还是二维的。
这三种内存模型都是指针做输入的情况,在主调函数中分配内存。
C/C++二级指针的三种模型的三种模型之一是
void printfArr(char **arrayPtr, int nLength) { int i = 0; for (; i < nLength; i++) { printf("%s\n", arrayPtr[i]); } } void sortArrayStr(char **arrayPtr, int nLength) { char *strTmp = NULL; int i = 0; int j = 1; for (; i < nLength; i++) { for(j = i + 1; j < nLength; j++) { if (strcmp(arrayPtr[i], arrayPtr[j]) > 0) { strTmp = arrayPtr[i]; arrayPtr[i] = arrayPtr[j]; arrayPtr[j] =strTmp; } } } } int main() {
<span style="white-space:pre"></span>// 这里的arrayStr是一个指针数组的数组名,也就是一个指针数组的首地址,他是指针数组,和整形数组类似
<span style="white-space:pre"></span>// 他和int a[10]中的a一样去考虑char *arrayStr[] = {"ccccc", "aaaa", "bbbb","11111"}; printf("排序之前\n"); printfArr(arrayStr,4); sortArrayStr(arrayStr, 4); printf("排序之后\n"); printfArr(arrayStr,4); system("pause"); }
C/C++二级指针的三种模型的三种模型之二。
intprintfArr22(char **ArrayStr, int iNum){int i = 0;for (i=0; i<iNum; i++){printf("%s \n", ArrayStr[i]);}return 0;}intprintfArr23(char myArray[10][30], int iNum){int i = 0;for (i=0; i<iNum; i++){printf("%s \n", myArray[i]);}return 0;}//intprintfArr22(char array[10], int iNum);intsortArr23(char myArray[10][30], int iNum){int i = 0, j = 0;char buf[30]; //buf数组名代表数组首元素的地址//排序for (i=0; i<4; i++){for (j=i+1; j<4; j++){if (strcmp(myArray[i], myArray[j]) > 0){strcpy(buf, myArray[i]);strcpy(myArray[i],myArray[j]);strcpy(myArray[j], buf);}}}}
void main(){int i = 0;char myArray[10][30] = {"ccccc", "aaaa", "bbbb","11111"}; //myArray数组名代表什么?抛砖
<span style="white-space:pre"></span>// myArray代表的是指向一个char tmp[30]的一个指针,他是一个数组的指针//打印第二种内存模型for (i=0; i<4; i++){printf("%s \n", myArray[i]);}printf("第二种内存模型,排序之前\n");printfArr23(myArray, 4);//printfArr23(myArray[10][30], 4);sortArr23(myArray, 4);printf("第二种内存模型,排序之后\n");printfArr23(myArray, 4);system("pause");}
第一种第二种二维数组的指针模型内存图如下图
C/C++二级指针的三种模型的三种模型之三
void printArray(char **myarray){int i = 0;for (i = 0; i < 10; i++){printf("%s\n", myarray[i]);}}
</pre><pre name="code" class="html">//第一种内存模型的排序算法也是用于第三种内存模型void sortArray(char **myarray, int num){char buf[100];int i = 0, j = 0;for (i = 0; i < num; i++){for (j = i + 1; j < num; j++){if (strcmp(myarray[i], myarray[j]) < 0){strcpy(buf, myarray[i]);strcpy(myarray[i], myarray[j]);strcpy(myarray[j], buf);}}}}int main(){int i =0, j = 0;char **myarray = (char **)malloc(10*sizeof(char*));for (; i < 10; i++){myarray[i] = (char *)malloc(100*sizeof(char));if (myarray[i] == NULL){return;}sprintf(myarray[i], "%d%d%d", i, i, i);}// 第三种内存模型打印printf("排序前:\n");printArray(myarray); sortArray(myarray, 10);printf("排序后:\n");printArray(myarray);for (i = 0; i < 10; i++){free(myarray[i]);}if (myarray != NULL){free(myarray);}system("pause");}
0 0
- C/C++二级指针的三种模型(一)
- C语言中,二级指针的三种内存模型
- C语言二级指针的三种模型
- C语言中的二级指针的三种内存模型
- C语言二级指针的三种模型
- c总结10--- 二级指针使用三种模型之三(二级指针3)
- c总结8 --- 二级指针使用三种模型之一(二级指针1)
- c总结9--- 二级指针使用三种模型之二(二级指针2)
- 二级指针的三种内存模型
- 二级指针的三种内存模型
- 二级指针的三种内存模型
- 二级指针的三种内存模型
- 【C语言提高27】二级指针三种内存模型总述
- 计算机等级考试二级C语言(三)搞定C指针
- C语言二级指针的第一类模型
- 二级指针输入模型(三种内存模型)
- C-二级指针输出模型练习
- 神奇的C语言三:二维数组与二级指针
- Python list 基础知识篇
- New String(s) 和 s.toString() 的区别
- C++STL各种实现版本介绍
- XML字符串转换成XML Document对象,并生成在指定路径
- 仓库管理系统系列——2、环境搭建和配置文件
- C/C++二级指针的三种模型(一)
- 理解“渐进增强(Progressive Enhancement)”
- OC瀑布流可拓展headView
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- win10自动更新后,浏览器能上网但qq连接超时问题
- 进程以及线程说明
- keepalived+nginx双机热备+负载均衡
- Android Shader
- 时间格式的转换日期转换毫秒