1
Rickkkkkkk 271 天前 1
说点题外话, 还有别的语言如此令人迷惑吗...
|
2
ffire 271 天前 1
int (*foo) [13]: foo 前有星号,被括起来,所以是一个指针,指向的东西是,一个含有 13 个 int 的数组;
int *bar[13]: bar 是一个数组,元素个数是 13 ,每一个元素是指向 int 的指针。 |
3
rookiemaster OP @ffire 第一个是'一个指针,指向的东西是,一个每个元素是 13 个 int 的数组;'吗?
|
4
agagega 271 天前
https://cdecl.org/
C 的声明方式令人迷惑,一是因为指针符号*在解析中的优先级其实很低,二是因为 C 的声明方式是按照某种解方程的逻辑进行的,比如 int *a[13]的意思是*a[0]的类型是 int |
5
zhouhu 271 天前 1
int (*daytab) [13] 首先是 (*daytab) 是一个指针,(*daytab) [13] 指向的是一个数组,int (*daytab) [13] 数组的每个元素是 int 类型。
int *daytab[13] 首先是 daytab[13] 是一个数组,int *daytab[13] 数组的每个元素是一个 int 指针。 |
6
zhouhu 271 天前 1
|
7
rrfeng 271 天前 1
我看看这里谁嫌弃 go 的声明语法:
foo *[13]int bar [13]*int |
8
Nosub 271 天前 via iPhone 1
过来人,给你推荐一下,你需要看一本书,日本人写的《征服 c 指针》,一切关于指针的困惑都可以解开 。
|
9
lesismal 271 天前 1
有个<让你不再害怕指针>, 好好看下基本就搞定 c 的指针了
|
10
pagxir 271 天前 via Android
第一个是数组指针,第二个指针数组。第一个 sizeof 在 64 位系统里是 8, 第二个是 8x13=104
|
11
aklllw 271 天前
VS 的代码风格是指针符号靠左吧?在这个问题好理解一些
int* daytab[13] // int* 类型的数组,数组名是 daytab |
12
lykhero 271 天前
去年初学的时候 这个简直是噩梦 即便是看的国外的教材和课堂
|
13
kenvix 271 天前
把 int *bar[13]写成 int* bar [13]吧,这样可以从泛型角度理解为 Pointer<Int> bar [13]
|
15
monkeyNik 271 天前
8 楼正解,OP 这是遇到面试题了吧 [手动狗头]
|
16
monkeyNik 271 天前
写错了 10 楼正解
|
17
ZZSZZSZZS 270 天前 via iPhone
还是用 std::array 吧
|
18
PTLin 270 天前 1
这半个月 v2 上 c 语言的问题好像都是你问的吧,也算弥补了我好久都没在 v2 看到 c 语言帖子的遗憾了。
|
19
dhb233 270 天前
每次看到这个就觉得 go 很好,反正每次都记不住,试一下就知道区别了
|
20
yolee599 270 天前 via Android
感觉第一个这么写没意义啊,声明不像声明,取值不像取值。要么括号无效,效果等同第二个,要么编译失败。
第二个是声明一个数组,这个数组可以用来装 13 个 int 类型的指针。 |