试图打印表单数组或数组地址...没有得到它?

时间:2012-07-19 07:05:56

标签: c arrays

这里新的,试图在你们的帮助下学习一块C,这可能是一个基本的问题....对不起你从基础开始。

void main()
{

char* arr[3] = {"baba","tata","kaka"};

char* arr1[3] = {"baba1","tata1","kaka1"};

char* arr2[3] = {"baba2","tata2","kaka2"};

char** array_all[] = {arr,arr1,arr2};

printf("%s\n",*array_all[0]);

//please guide me how to access individual entity(as arr[1], arr1[2],arr3[1])      //from each array using array_all

}

2 个答案:

答案 0 :(得分:3)

我不确定这是否正是您所寻找的......但这是我目前所理解的。

您想要访问array_all的各个元素(元素arr,arr1和arr2)?如果是这样,那么你所做的就是......

array_all[0][i];

我是您要访问的元素。

这是因为索引运算符([和])实际取消引用指针并偏移指定的指针(如在某个整数中添加它,即在内存中向下移动)。如果您不知道如果使用某个整数添加指针会发生什么,我建议您阅读指针算法。

例如:

int x[] = { 1, 2, 3 };
// writing x[i] is the same as *(x + i)
int i = 2; // the element you wish to access
*(x + i) = 4;  // set the ith (3rd) element to 4
*(x + 1) = 43; // set the 2nd element to 43

// Therefore...
// x now stores these elements:
// 1, 43, 4

// proof: print out all the elements in the array
for(int i = 0; i < 3; ++i)
{
   printf("x[%i]=%i\n", i, x[i]);
}

此外,写入x [0]与写入* x相同,因为数组名称实际上指向数组的第一个元素。

OH和一件事,main应该实际返回一个整数结果。这主要用于程序中的错误检查,0通常表示没有发生错误,其他每个错误代码(0以外的数字)都是与程序相关的特定错误,您可以选择。 即。

int main()
{
   // e.g. for an error code
   /*
   if(someErrorOccured)
   {
      return SOME_ERROR_OCCURED_RETURN_VALUE;
   }
   */
   return 0; // this is at the end of the function, 0 means no error occured
}

答案 1 :(得分:1)

用这个改变你的printf语句行..

printf("%s\n",array_all[i][j]);

代替我保留你的数组编号而不是k代替你所需的元素编号。它有效。