C 指针数组

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

#define TRUE 1
#define FALSE 0

int 
find_str(char **str, char* values)
{
	// 用来处理内部的
	char* temp = NULL;
	while (*str != NULL)
	{
		temp = *str;
		while ( *temp!= '\0')
		{
			printf("before: %c\r\n", *temp);
			if (*temp == *values)
			{
				return TRUE;
			}
			temp++;
		}
		str++;
	}
	return FALSE;
}


void  
find_str_2DArray(char (*arr)[6],int rows,char* values)
{
	for (int i = 0; i < rows; i++)
	{
		for (int j = 0; j < 6; j++)
		{
			printf("%c\r\n", arr[i][j]);
		}
	}
}

int main()
{
	/*
	测试总结:
	如果函数要求传递的是一个二维的数组,func( int (*arr)[col],int row);
	这样的,那么在使用的过程中, 一定要使用 int temp[2][3]={{1,2,3},{1,2,3}};
	
	如果函数要求传递的一个指针的指针, func(int** arr, int row);
	这样的,那么在使用的过程中, 一定要使用,init  *name[] = {};
	如果传递了上一个二维数组 ,则会出现不可预料的事。
		
	特别注意函数的声明和参数的传递。

	*/
	char *name[] = { "zhang","chao","wang" };
	char last[][6] = { "zhang","chao","wang" };
	char* _str = "o";
	int res = 0;
	res = find_str(name, _str);
	printf("result : %d\r\n", res);

	find_str_2DArray(last, 3, "a");


	return 0;
}

记录:

该部分代码的问题在于,使用者在不阅读代码的情况不, 不知道需要传递一个什么样的参数进来 , 

正常如果内部需要一个二维 的数组 的时候 ,参数都 是  fun(char (arr*)[5],int row)

很明确的传递给使用者一个信息, 就 是, 必须要用一个二维的数组 。

猜你喜欢

转载自my.oschina.net/u/1579560/blog/1823408