由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - T[ ][ ] vs T **
相关主题
关于java的二维数组的问题[合集] 一个vector的问题
Java数组怎么样能参数传递 (转载)在C/Fortran之间传递2维数组
[合集] 一道C++的面试题,双黄包求答案 (转载)问个模板函数的问题
perl二维数组一问问题请教
C++ and java也问个二维数组的函数传递问题
请问C#里面,如何对N个数组设置循环访问?搞不定,不得不问,一维数组跟二维数组的问题
请教一个2维动态矩阵的问题问个技术问题: c++ 调试怎么显示二维数组?比如Visual Studio
one more interview question关于二维矩阵的C的问题
相关话题的讨论汇总
话题: java话题: vs话题: int话题: oranges话题: 类似
进入Programming版参与讨论
1 (共1页)
e****d
发帖数: 333
1
工作中常用到二维数组,请问怎么处理,
直接定义 T[ ][ ] 和动态分配 T**,两者好像不一样,为什么呢?相互也不能转化。
为什么呢?函数也不能返回二维数组吗?
大侠们工作中用到二维数组都是怎么处理的呢?如果要大小可变的,好像就必须动态非
配,但是缺点就是很容易出错。
多谢。
t****t
发帖数: 6806
2
http://c-faq.com/aryptr/index.html

【在 e****d 的大作中提到】
: 工作中常用到二维数组,请问怎么处理,
: 直接定义 T[ ][ ] 和动态分配 T**,两者好像不一样,为什么呢?相互也不能转化。
: 为什么呢?函数也不能返回二维数组吗?
: 大侠们工作中用到二维数组都是怎么处理的呢?如果要大小可变的,好像就必须动态非
: 配,但是缺点就是很容易出错。
: 多谢。

h*********e
发帖数: 56
3
int 'int T[][]' and 'int **T' are very very different.
I think T[][] is easier to use as well as to allocate, because all you need
for T[m][n] is a matrix of m by n. And I guess the compiler actually treats
it as a one dimensional array. T is then a constant and contains the address
of the 1st element.
With **T, you need
1) m arrays (rows), each of which contains n elements (columns)
2) an array of m elements, each pointing to one of the m rows
3) a pointer to a pointer to T, pointing to the 1st
a****l
发帖数: 8211
4
you should ask "T[][] vs T*", otherwise you are comparing apples to oranges.

【在 e****d 的大作中提到】
: 工作中常用到二维数组,请问怎么处理,
: 直接定义 T[ ][ ] 和动态分配 T**,两者好像不一样,为什么呢?相互也不能转化。
: 为什么呢?函数也不能返回二维数组吗?
: 大侠们工作中用到二维数组都是怎么处理的呢?如果要大小可变的,好像就必须动态非
: 配,但是缺点就是很容易出错。
: 多谢。

X****r
发帖数: 3557
5
Beginners often ask "T[][] vs T**" because they have similar syntaxes.

oranges.

【在 a****l 的大作中提到】
: you should ask "T[][] vs T*", otherwise you are comparing apples to oranges.
h*****0
发帖数: 4889
6
好像java里的T[][]和C里的T**是基本一样的。

【在 X****r 的大作中提到】
: Beginners often ask "T[][] vs T**" because they have similar syntaxes.
:
: oranges.

X****r
发帖数: 3557
7
就结构而言Java里非primitive类型类似于C里对应的指针类型,
所以如果T是primitive的话,Java里T类似于C里的T,
Java里T[]类似于C里的T(*)[],
Java里T[][]类似于C里的T(*(*)[])[];
如果T不是primitive的话,Java里T类似于C里的T*,
Java里T[]类似于C里的T*(*)[],
Java里T[][]类似于C里的T*(*(*)[])[]。
就语法而言Java里非primitive类型存取不需要加*。

【在 h*****0 的大作中提到】
: 好像java里的T[][]和C里的T**是基本一样的。
t****t
发帖数: 6806
8
你是在练习绕口令吗!

【在 X****r 的大作中提到】
: 就结构而言Java里非primitive类型类似于C里对应的指针类型,
: 所以如果T是primitive的话,Java里T类似于C里的T,
: Java里T[]类似于C里的T(*)[],
: Java里T[][]类似于C里的T(*(*)[])[];
: 如果T不是primitive的话,Java里T类似于C里的T*,
: Java里T[]类似于C里的T*(*)[],
: Java里T[][]类似于C里的T*(*(*)[])[]。
: 就语法而言Java里非primitive类型存取不需要加*。

t****t
发帖数: 6806
9
我承认, 我没看懂T(*)[]是什么意思?

【在 X****r 的大作中提到】
: 就结构而言Java里非primitive类型类似于C里对应的指针类型,
: 所以如果T是primitive的话,Java里T类似于C里的T,
: Java里T[]类似于C里的T(*)[],
: Java里T[][]类似于C里的T(*(*)[])[];
: 如果T不是primitive的话,Java里T类似于C里的T*,
: Java里T[]类似于C里的T*(*)[],
: Java里T[][]类似于C里的T*(*(*)[])[]。
: 就语法而言Java里非primitive类型存取不需要加*。

X****r
发帖数: 3557
10
指向每个成员类型为T的数组的指针?写得不对?

【在 t****t 的大作中提到】
: 我承认, 我没看懂T(*)[]是什么意思?
t****t
发帖数: 6806
11
哦, 对的. 我糊涂了.

【在 X****r 的大作中提到】
: 指向每个成员类型为T的数组的指针?写得不对?
k***r
发帖数: 4260
12
T**也可以,不过要多次分配内存。

oranges.

【在 a****l 的大作中提到】
: you should ask "T[][] vs T*", otherwise you are comparing apples to oranges.
b*****j
发帖数: 1335
13
没这么复杂.
T[] ~ T*
因为T[i] ~ T[i]
T[][] ~ T**
因为T[i][j] ~ T[i][j]
而且都可以不等长

【在 X****r 的大作中提到】
: 就结构而言Java里非primitive类型类似于C里对应的指针类型,
: 所以如果T是primitive的话,Java里T类似于C里的T,
: Java里T[]类似于C里的T(*)[],
: Java里T[][]类似于C里的T(*(*)[])[];
: 如果T不是primitive的话,Java里T类似于C里的T*,
: Java里T[]类似于C里的T*(*)[],
: Java里T[][]类似于C里的T*(*(*)[])[]。
: 就语法而言Java里非primitive类型存取不需要加*。

w***g
发帖数: 5958
14
这个是对的。int **T 在不是顺序访问每行的情况下是最慢的做法。应该用int *T每次
手工算offset。这一点我有过深刻的教训。

need
treats
address

【在 h*********e 的大作中提到】
: int 'int T[][]' and 'int **T' are very very different.
: I think T[][] is easier to use as well as to allocate, because all you need
: for T[m][n] is a matrix of m by n. And I guess the compiler actually treats
: it as a one dimensional array. T is then a constant and contains the address
: of the 1st element.
: With **T, you need
: 1) m arrays (rows), each of which contains n elements (columns)
: 2) an array of m elements, each pointing to one of the m rows
: 3) a pointer to a pointer to T, pointing to the 1st

1 (共1页)
进入Programming版参与讨论
相关主题
关于二维矩阵的C的问题C++ and java
弱人再问一个关于Java的问题请问C#里面,如何对N个数组设置循环访问?
问高手一个PERL的简单程序请教一个2维动态矩阵的问题
Please recommend book for Java learning from beginner to advanced level very quicklyone more interview question
关于java的二维数组的问题[合集] 一个vector的问题
Java数组怎么样能参数传递 (转载)在C/Fortran之间传递2维数组
[合集] 一道C++的面试题,双黄包求答案 (转载)问个模板函数的问题
perl二维数组一问问题请教
相关话题的讨论汇总
话题: java话题: vs话题: int话题: oranges话题: 类似