C++之二级指针的三种内存模型学习笔记

第一种内存模型:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void main()
{
	char *ArrayStr[] = { "ccccc", "bbbb", "aaaaa", "1111" };
	printf("排序之前:\n");
	printfArr(ArrayStr, 4);
	sortArrayStr(ArrayStr, 4);
	printf("排序之后:\n");
	printfArr(ArrayStr,4);
	system("pause");
}

int printfArr(char **ArrayStr, int iNum)
{
	for (int i = 0; i < iNum; i++)
	{
		printf("%s\n", ArrayStr[i]);
	}
	return 0;
}

int sortArrayStr(char **ArrayStr, int iNum)
{
	for (int i = 0; i < iNum; i++)
	{
		for (int j = i + 1; j < iNum; j++)
		{
			if (strcmp(ArrayStr[i], ArrayStr[j]) > 0)
			{
				char *tmp = NULL;
				tmp = ArrayStr[i];
				ArrayStr[i] = ArrayStr[j];
				ArrayStr[j] = tmp;
			}
		}
	}
	return 0;
}

对参数的指针类型应该从两个角度来理解:

第一个角度,站在c/c++编译器的角度,如果是指针类型,c编译器只会给它分配四个内存单元

第二个角度,我们只有在使用指针所指向的内存空间的时候,我们才关心内存是一维的还是二维的。

猜你喜欢

转载自blog.csdn.net/zym326975/article/details/79920556