请看下面的代码并告诉我***ptr
在什么位置? 即我有一种感觉,***ptr
实际上位于ptr[0][0][0]
我错了吗?以下是指针的三维表示。在那里我想分配一些字符,后来我想测试***ptr
的索引是什么?将等待c指针理解问题
#include<stdio.h>
#include<conio.h>
#define row 5
#define rw 3
#define col 10
char ***ptr;
int i,j,k;
void main()
{
clrscr();
ptr=(char *)malloc(row*sizeof(char *));
for(i=0;i<row;i++)
{
*(ptr+row)=(char *)malloc(rw*sizeof(char *));
printf("\t:\n");
for(j=0;j<rw;j++)
{
*(*(ptr+row)+rw)=(char *)malloc(col*sizeof(char *));
if(i==0 && j==0)
{ // *(*(ptr+row)+rw)="kabul";
**ptr="zzz";
}
else
*(*(ptr+row)+rw)="abul";
printf("\taddress=%d %d%d = %s\n",((ptr+row)+rw),i,j,*(*(ptr+row)+rw));
}
printf("\n");
}
printf("%c %d",***ptr,ptr);
getch();
}
你做错了一件事(2次)。将内存分配给位置*(ptr + row)将其写入一个位置(即使它是一个循环,也只有一个位置),您需要将它写入*(ptr + i)(循环中的所有malloc重复执行 – fazo
伙计im试图实现3D数组在这里,所以mi不应该有第二个索引和第三个索引的2d循环,并最终在代码中写入malloc 3次? –
您是否试图创建一个二维数组的字符串?我不确定你在做什么...... – Manos