【发布时间】:2021-08-19 12:30:16
【问题描述】:
嘿,我是 C 的初学者,我正在尝试理解指针 我创建了一个程序,在该程序中衰减数组 arr1 中的指针 d,然后在 d 指针中衰减指向指针 dd 的指针。 我的目的是使用指向非动态分配数组中的指针的指针来打印单词。 第一个程序打印所有单词 第二个程序只打印第一行 第三个程序打印第一行和一些奇怪的符号 我知道这是一种不寻常的方式,但我很好奇为什么 d++ 或 dd++ 在非动态分配的数组中不起作用?
第一个程序
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i=0;
char arr1[5][10]={"ball","wall","window","table","tv"};
printf("\n");
char *d;
char **dd=&d;
for(i=0; i<5; ++i){
d=arr1[i];
printf("array[%d] contains: %s\n", i, *dd);
}
return 0;
}
第二个节目
#include<stdio.h>
#include<stdlib.h>
int main ()
{
int i=0;
char arr1[5][10]={"ball","wall","window","table","tv"};
printf("\n");
char *d;
d=&arr1[0][0];
char **dd;
dd=&d;
for(dd=&d ; *dd ; dd++)
{
printf("\nthe words are %s",*dd);
d++;
}
return 0;
}
第三个程序
#include<stdio.h>
#include<stdlib.h>
int main ()
{
int i=0;
char arr1[5][10]={"ball","wall","window","table","tv"};
printf("\n");
char *d;
d=&arr1[0][0];
char **dd;
dd=&d;
for(dd=&d ; *dd ; dd++)
{
printf("\nthe words are %s",*dd);
}
return 0;
}
【问题讨论】:
-
您的文字询问
d++,但这不在您的代码中...!? -
@4386427 对不起,我现在编辑了
标签: c pointers multidimensional-array implicit-conversion pointer-arithmetic