在二维数组中*(a+1)为什么等于a+1,主要是想知道*(a+1)为什么是一个地址?(C语言二维数组中a【i】、&a【i】、a+1、*(a+1)代表的含
- C语言二维数组中a【i】、&a【i】、a+1、*(a+1)代表的含义一样吗?如果一样为什么?
- 为什么0.99999999999....=1
- matlab a(:,:,1)是什么意思
- 在二维数组a[ i ][ j ]中*(a+i)表示第i行的首地址,为什么不是表示第i行首元素呢?
C语言二维数组中a【i】、&a【i】、a+1、*(a+1)代表的含义一样吗?如果一样为什么?
它们只是值相等,但类型不相等,不能说它们相等。
a+1是int **类型,指向的是数组a的第二行的起始地址; *(a+1)是int *型,指向的是数组a的第二行第一个元素的地址。
为什么0.99999999999....=1
从本质上,这是一个定义的问题,涉及到极限,请仔细看我的阐述,你会理解的:)
0.9的9循环是可以这样被定义的:(这种定义与其他是等价的)
在实数域(就是实数范围内:)上,构造这样一个实数:0.999在后面添加N个9 对N取无穷大,求此时的极限,设它是X
这里,无穷大和极限是这么定义的 :设A(N)代表有N个9的这个小数(注意它是有限的),对于任意给定一个实数B(无论它有多小),总是存在一个数C(它其实就是要求的X)使得当N大于某个数(只要它存在。它与指定的B有关)时,A-C<B 那么, C就叫做A在N趋向无穷大时的极限。
在此题范围内,解X只有取1能满足(可以证明的),于是把0.99999循环定义为1
比如,1.001不能满足,因为我指定B=0.00001时 无论N取多大,(就是添加多少个9) , 1.001-A总是大于 0.001>B 所以1.001不是极限。又比如,0.999999也不能满足,因为我也可以指定一个B=0.00000000001,对于A-0.999999 在N取7位的时候,得到0.0000009>B 也不满足。
matlab a(:,:,1)是什么意思
a这是是一个三维矩阵,a(:,:,1)表示取a矩阵第一页的所有行和列。
三维矩阵中第一维为行,第二维为列,第三维为页;
matlab中矩阵用:表示取该维度的所有下标值。
在二维数组a[ i ][ j ]中*(a+i)表示第i行的首地址,为什么不是表示第i行首元素呢?
反过来思考一下:
如果 *(a+i) 是第i行的行首元素,那么第i行的第二个元素应该怎么表示呢?
a+i 和 *(a+i)虽然值相等,但是他们的意义是不同的
a+i 是数组指针的指针,p=a+i;p++;跳过一行
*(a+i)是指针,p=*(a+i);p++;跳过一列