C语言,#include #define f printf main(){\x05int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};\x05f("%d\n",a);\x05f("%d\n",*a);\x05f("%d\n",a[0]);\x05f("%d\n",&a[0]);\x05f("%d\n\n",&a[0][0]);\x05\x05f("%d\n",a+1);\x05f("%d\n",*(a+1));\x05f("%d\n",a[1]);\x05f(

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 22:41:14

C语言,#include #define f printf main(){\x05int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};\x05f("%d\n",a);\x05f("%d\n",*a);\x05f("%d\n",a[0]);\x05f("%d\n",&a[0]);\x05f("%d\n\n",&a[0][0]);\x05\x05f("%d\n",a+1);\x05f("%d\n",*(a+1));\x05f("%d\n",a[1]);\x05f(
C语言,
#include
#define f printf
main()
{
\x05int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
\x05f("%d\n",a);
\x05f("%d\n",*a);
\x05f("%d\n",a[0]);
\x05f("%d\n",&a[0]);
\x05f("%d\n\n",&a[0][0]);
\x05
\x05f("%d\n",a+1);
\x05f("%d\n",*(a+1));
\x05f("%d\n",a[1]);
\x05f("%d\n",&a[1]);
\x05f("%d\n\n",&a[1][0]);
\x05
\x05f("%d\n",a+2);
\x05f("%d\n",*(a+2));
\x05f("%d\n",a[2]);
\x05f("%d\n",&a[2]);
\x05f("%d\n\n",&a[2][0]);
\x05
\x05f("%d\n",a[1]+1);
\x05f("%d\n\n",*(a+1)+1);
\x05
\x05f("%d,%d\n",*(a[1]+1),*(*(a+1)+1));
}
怎么有几行带*运算符的还是输出地址,只有最后一行出去的是值,其他都是地址,意思是对于二维来说只要不指明准确的行和列都输出某行的首地址?搞晕了似懂非懂的,求教.

C语言,#include #define f printf main(){\x05int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};\x05f("%d\n",a);\x05f("%d\n",*a);\x05f("%d\n",a[0]);\x05f("%d\n",&a[0]);\x05f("%d\n\n",&a[0][0]);\x05\x05f("%d\n",a+1);\x05f("%d\n",*(a+1));\x05f("%d\n",a[1]);\x05f(
f("%d\n",a);
f("%d\n",*a);
f("%d\n",a[0]);
f("%d\n",&a[0]);
f("%d\n\n",&a[0][0]); //都是首地址
f("%d\n",a+1);
f("%d\n",*(a+1));
f("%d\n",a[1]);
f("%d\n",&a[1]);
f("%d\n\n",&a[1][0]);//都是第二行元素的地址
f("%d\n",a+2);
f("%d\n",*(a+2));
f("%d\n",a[2]);
f("%d\n",&a[2]);
f("%d\n\n",&a[2][0]);//都是第三行元素的地址
f("%d\n",a[1]+1);
f("%d\n\n",*(a+1)+1);//都是第二行第二列的地址
f("%d,%d\n",*(a[1]+1),*(*(a+1)+1));//第二行第二列的内容
你得去看看书 二维指针和一维指针所指向的地址和内容比较容易搞混的 不是带*的就一定是指向内容 比如*(a+i)在一维里表示a[i]的内容 但是在二维里就是表示&a[i][0]是个地址
二维的内容一般都是*(*(a+i)+j)表示
我当初也看了老半天才知道 你看看这些输出结果 找找规律 自己归纳归纳哈