int* row;
row = (int*)(malloc)(5 * sizeof(int));
int **s1;
s1=(int**)(malloc)(2*sizeof(row));
row[0] = 1;
row[1] = 2;
row[2] = 1;
row[3] = 2;
row[4] = 1;
s1[0] = row;
row[0] = 3;
row[1] = 3;
row[2] = 3;
row[3] = 4;
row[4] = 3;
s1[1] = row;
for (int i = 0; i < 5; i++) printf("%d", s1[0][i]);
printf("\n");
for (int i = 0; i < 5; i++) printf("%d", s1[1][i]);
我的输出。
33343
33343
但我想看看
12121
33343
作为输出。另外,我不想使用静态分配。
动态分配的指针数组的两个指针(元素)在赋值后都指向同一个对象行。
s1[0] = row;
//...
s1[1] = row;
所以,当前时刻存储在指针行所指向的数组中的内容就指向这两个指针s1[0]和s1[1]。
你需要将指针s1[1]设置为其他数组。