char[]

strchr(const char *s,char c) 查找字符串s中首次出现字符c的位置。

strrchr(const char *s, char c) 从字符串末尾开始查找字符串s中首次出现字符c的位置。

 

二维数组

char FutureFunc[][16] = {"XMA","ZIG","PEAK","PEAKBARS","BACKSET"};//存储未来函数的二维数组
int nFuncNum = sizeof(FutureFunc) / (sizeof(char) * 16);//未来函数的个数
for(int i = 0; i < nFuncNum; i++)
{
	printf("%s\n",FutureFunc[i]);
}

int iFutureFunc[][2] = {0,01,10,11};
int iFutureFuncNum = sizeof(iFutureFunc) / (sizeof(int)*2);
for(int i = 0; i < iFutureFuncNum; i++)
{
	for (int j = 0; j < 2; j++)
	{
		printf("%d\n",iFutureFunc[i][j]);
	}
}

如果不在定义二维数组的时候赋值,就需要在定义时确定二维数组第一个下标的值,不然后面赋值时,默认二维数组第一个下标的值为1。

定义时指定了第一个下标值,才能正常赋值。

 

二维数组做形参

int TestArr[8][9] = {0};
testArr(TestArr, 8); //直接将声明的二维数组的数组名(即首地址)传递到自定义函数中。但要注意,在函数定义中必须指明第二维的维度!

void testArr(int iArr[][9], int m)
{
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < 9; j++)
		{
			cout << iArr[i][j] << endl;
			cout << *(*iArr + i*9 + j) << endl; //对于数组 int iArr[m][n],如果要取iArr[i][j]的值(i>=0 && i<m && 0<=j && j < n),编译器是这样寻址的,它的地址为: *iArr + i*n + j;//注意n, 这里如果省略了第二维或者更高维的大小,编译器将不知道如何正确的寻址。
												//iArr 表示二维数组的首地址, 即iArr[0]的地址, iArr+1 表示iArr[1]的地址。 *iArr 表示一维数组的首地址, 即iArr[0][0]的地址, *iArr+1表示的是iArr[0][1]的地址。
		}
		cout << endl;
	}
}

  

posted @ 2017-04-12 15:28  那一剑的風情  阅读(266)  评论(0)    收藏  举报