C语言,#include #define f printf main(){\x05int a[3][4]={0,1,2,
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/04/28 01:14:19
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));
}
怎么有几行带*运算符的还是输出地址,只有最后一行出去的是值,其他都是地址,意思是对于二维来说只要不指明准确的行和列都输出某行的首地址?搞晕了似懂非懂的,求教.
#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));
}
怎么有几行带*运算符的还是输出地址,只有最后一行出去的是值,其他都是地址,意思是对于二维来说只要不指明准确的行和列都输出某行的首地址?搞晕了似懂非懂的,求教.
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)表示
我当初也看了老半天才知道 你看看这些输出结果 找找规律 自己归纳归纳哈
再问: 额,别这么模糊啊,就说明一下二维里用了*号但是仍然输出地址的话,这个*号是不是就不是“取内容运算符了”,那这个*表示什么
再答: 你有书么?看看那个概念 自己琢磨下 挺简单的 一维和二维不能用一个思维去考虑 在二维里*(a+i)只是a[i]的另外一种表达方式 都是表示的地址 因为在二维里有行和列 所以在二维里 a+i不是指向具体存储内容 而是表示行 你记住啊 a[i] a+i *(a+i) &a[i][0] &a[0]是相等的都是表示这一行的地址 这样说你明白了么 总之以后还会碰到很多东西不要用一种思维去考虑
再问: 理解倒是理解了,*(a+i)这种类型因为没指明具体行和列所以即使用*取内容,取出来的都是地址,因为这里a+i的内容就是地址,也可以理解为指针,就像a[][]一样,没指明具体元素位置都是指地址,也就是说*(a+i)就是指向指针的指针,这样理解可以吧~?额,那些书很多坑爹的,我看到这部分内容的时候其实已经明白了,但就是看那些书看的又晕了,谢谢
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)表示
我当初也看了老半天才知道 你看看这些输出结果 找找规律 自己归纳归纳哈
再问: 额,别这么模糊啊,就说明一下二维里用了*号但是仍然输出地址的话,这个*号是不是就不是“取内容运算符了”,那这个*表示什么
再答: 你有书么?看看那个概念 自己琢磨下 挺简单的 一维和二维不能用一个思维去考虑 在二维里*(a+i)只是a[i]的另外一种表达方式 都是表示的地址 因为在二维里有行和列 所以在二维里 a+i不是指向具体存储内容 而是表示行 你记住啊 a[i] a+i *(a+i) &a[i][0] &a[0]是相等的都是表示这一行的地址 这样说你明白了么 总之以后还会碰到很多东西不要用一种思维去考虑
再问: 理解倒是理解了,*(a+i)这种类型因为没指明具体行和列所以即使用*取内容,取出来的都是地址,因为这里a+i的内容就是地址,也可以理解为指针,就像a[][]一样,没指明具体元素位置都是指地址,也就是说*(a+i)就是指向指针的指针,这样理解可以吧~?额,那些书很多坑爹的,我看到这部分内容的时候其实已经明白了,但就是看那些书看的又晕了,谢谢
C语言,#include #define f printf main(){\x05int a[3][4]={0,1,2,
C语言计算小问题#include#define Add(x) x+xint main(){\x05\x05int m=1
c语言大整数乘法问题#include#include#define max 10int main(){\x05int i
C语言求找错,.#include int main(){\x05int sign=1;\x05double deno=2
C语言:二分法#include#define f(x) (x*x*x-2*x*x+3*x-4)void main(){
C 语言函数定义调用#include"stdio.h"main(){\x05int i=6,j=8,k;\x05int
、 #define M(x,y,z) x*y+z main() { int a=1,b=2,c=3; printf("%
#define f(a,b,x) a*x+b #include void main() printf("%d,%d\n"
#include #define f(a,b,x) a*x+b void main() { printf("%d,%d\
关于C语言的一道题:#include int main(void){printf("%f\n",5);printf("%
c语言 输出3位小数#include #include #include int main(){printf("%d\n
#include #include #define N 20main( ){ int a[N]={7,10,12,0,3