zoukankan      html  css  js  c++  java
  • 二级指针的三种内存模型

    第一种内存模型:

    /*
     Module:		二级指针第一种内存模型.cpp
     Notices:		Copyright (c) 2017 Landy Tan
    */
    
    
    #include <iostream>
    using namespace std;
    
    
    /////////////////////////////////////////////////
    
    
    #define SIZE(a) sizeof(a) / sizeof(a[0])
    int SortArray(char **pArray, int nLen);
    int OutputArray(char **pArray, int nLen);
    
    
    /////////////////////////////////////////////////
    
    
    int main()
    {
    	char* pArray[] = { "333", "111", "444", "222", "666" };
    	cout << "Before sorting..." << endl;
    	OutputArray(pArray, SIZE(pArray));
    
    	SortArray(pArray, SIZE(pArray));
    
    	cout << "After sorting..." << endl;
    	OutputArray(pArray, SIZE(pArray));
    
    	system("pause");
    	return 0;
    }
    
    
    /////////////////////////////////////////////////
    
    
    int SortArray(char **pArray, int nLen)
    {
    	if (pArray == NULL || nLen <= 0)
    		return -1;
    
    	for (int i = 0; i < nLen; i++)
    	{
    		for (int j = i; j < nLen; j++)
    		{
    			if (strcmp(*(pArray + i), *(pArray + j)) > 0)
    			{	// Modify the pointer to the point.
    				char *pTmp = *(pArray + i);
    				*(pArray + i) = *(pArray + j);
    				*(pArray + j) = pTmp;
    			}
    		}
    	}
    	return 0;
    }
    
    
    /////////////////////////////////////////////////
    
    
    int OutputArray(char **pArray, int nLen)
    {
    	if (pArray == NULL || nLen <= 0)
    		return -1;
    
    	for (int i = 0; i < nLen; i++)
    		cout << *(pArray + i) << endl;
    	return 0;
    }
    
    
    //////////////// End of File ////////////////////
    

      

    第二种内存模型:

    /*
     Module:		二级指针第二种内存模型.cpp
     Notices:		Copyright (c) 2017 Landy Tan
    */
    
    
    #include <iostream>
    using namespace std;
    
    
    /////////////////////////////////////////////////
    
    
    #define SIZE(a) sizeof(a) / sizeof(a[0])
    int SortArray(char(*pArray)[30], int nLen);
    int OutputArray(char(*pArray)[30], int nLen);
    
    
    /////////////////////////////////////////////////
    
    
    int main()
    {
    	char pArray[][30] = { "333", "111", "444", "222", "666" };
    	cout << "Before sorting..." << endl;
    	OutputArray(pArray, SIZE(pArray));
    
    	SortArray(pArray, SIZE(pArray));
    
    	cout << "After sorting..." << endl;
    	OutputArray(pArray, SIZE(pArray));
    
    	system("pause");
    	return 0;
    }
    
    
    /////////////////////////////////////////////////
    
    
    int SortArray(char(*pArray)[30], int nLen)
    {
    	if (pArray == NULL || nLen <= 0)
    		return -1;
    
    	for (int i = 0; i < nLen; i++)
    	{
    		for (int j = i; j < nLen; j++)
    		{
    			if (strcmp(*(pArray + i), *(pArray + j)) > 0)
    			{	// Modify the data pointed to by the pointer.
    				char sz[30] = { 0 };
    				strcpy_s(sz, *(pArray + i));
    				strcpy_s(*(pArray + i), *(pArray + j));
    				strcpy_s(*(pArray + j), sz);
    			}
    		}
    	}
    	return 0;
    }
    
    
    /////////////////////////////////////////////////
    
    
    int OutputArray(char(*pArray)[30], int nLen)
    {
    	if (pArray == NULL || nLen <= 0)
    		return -1;
    
    	for (int i = 0; i < nLen; i++)
    		cout << *(pArray + i) << endl;
    	return 0;
    }
    
    
    //////////////// End of File ////////////////////
    

      

    第三种内存模型:

    /*
    Module:			二级指针第三种内存模型.cpp
    Notices:		Copyright (c) 2017 Landy Tan
    */
    
    
    #include <iostream>
    using namespace std;
    
    
    /////////////////////////////////////////////////
    
    
    int SortArray(char **pArray, int nLen);
    int OutputArray(char **pArray, int nLen);
    int NewBuffer(char ***pBuf, int nLen1, int nLen2);
    void DeleteBuffer(char ***pBuf, int nLen1);
    
    /////////////////////////////////////////////////
    
    
    int main()
    {
    	char **pBuf;
    	NewBuffer(&pBuf, 5, 30);
    	if (pBuf == NULL)
    	{
    		cout << "New buffer error." << endl;
    		system("pause");
    		return -1;
    	}
    	strcpy_s(*(pBuf + 0), 30, "333");
    	strcpy_s(*(pBuf + 1), 30, "111");
    	strcpy_s(*(pBuf + 2), 30, "444");
    	strcpy_s(*(pBuf + 3), 30, "222");
    	strcpy_s(*(pBuf + 4), 30, "666");
    
    
    	cout << "Before sorting..." << endl;
    	OutputArray(pBuf, 5);
    
    	SortArray(pBuf, 5);
    
    	cout << "After sorting..." << endl;
    	OutputArray(pBuf, 5);
    
    	DeleteBuffer(&pBuf, 5);
    	system("pause");
    	return 0;
    }
    
    
    /////////////////////////////////////////////////
    
    
    int SortArray(char **pArray, int nLen)
    {
    	if (pArray == NULL || nLen <= 0)
    		return -1;
    
    	for (int i = 0; i < nLen; i++)
    	{
    		for (int j = i; j < nLen; j++)
    		{
    			if (strcmp(*(pArray + i), *(pArray + j)) > 0)
    			{	
    
    			}
    		}
    	}
    	return 0;
    }
    
    
    /////////////////////////////////////////////////
    
    
    int OutputArray(char **pArray, int nLen)
    {
    	if (pArray == NULL || nLen <= 0)
    		return -1;
    
    	for (int i = 0; i < nLen; i++)
    		cout << *(pArray + i) << endl;
    	return 0;
    }
    
    
    /////////////////////////////////////////////////
    
    
    int NewBuffer(char ***pBuf, int nLen1, int nLen2)
    {
    	if (pBuf == NULL || nLen1 <= 0 || nLen2 <= 0)
    		return -1;
    	char **p = *pBuf;
    	p = new char*[nLen1];
    	for (int i = 0; i < nLen1; ++i)
    	{
    		p[i] = new char[nLen2]{ 0 };
    	}
    	*pBuf = p;
    	return 0;
    }
    
    
    /////////////////////////////////////////////////
    
    
    void DeleteBuffer(char ***pBuf, int nLen1)
    {
    	if (pBuf == NULL)
    		return ;
    
    	char **p = *pBuf;
    	for (int i = 0; i < nLen1; i++)
    	{
    		delete[] p[i];
    		p[i] = NULL;
    		
    	}
    	delete[] p;
    	p = NULL;
    
    	*pBuf = p;
    	return;
    }
    
    
    //////////////// End of File ////////////////////
    

      

  • 相关阅读:
    Java匹马行天下之一顿操作猛如虎,框架作用知多少?
    ztree树应用
    动态将ASPX生成HTML网页并将网页导出PDF
    实现图片向上不停的无限滚动效果简单代码
    简单的前端正则验证用户输入的数字是否合法
    eclipse出现jdk版本更新导致无法启动
    删除所有视图 删除所有存储过程
    删除所有表的数据
    要求必须全部重复的数据sql--想了半天才写出来的
    查询树节点下的所有子节点包括根节点
  • 原文地址:https://www.cnblogs.com/LandyTan/p/6828182.html
Copyright © 2011-2022 走看看