在这种情况下,int**在C中是什么意思
What does int** mean in C in this context?
这里是上下文:
int *t[10];
int n;
有人告诉我t-n
的类型是int**。我不太明白int**是什么意思,它是指针的指针吗?为什么指针表int的减法会得到一个int的指针?当我们引用*t[0]
时,我们是将int* p
引用为指针本身,因为它是表的一个元素,还是我们隐含地需要一个指针指向槽,而不是让指针指向另一个位置?
提前感谢你向我解释这一点。
我不完全明白
int**
的意思,它是指针的指针吗?
是。
int
=整数int *
=指向整数的指针int **
=指向-的指针(指向整数的指针(int ***
=指向-的指针(指向-(指向整数的指针((- (依此类推(
为什么指针表的减法-int会给出int的指针的指针?
因为在C(和C++(中,数组在必要时会衰减为指向第一项的指针。例如,int *t[10]
是一个包含指向int项的10个指针的数组。t
可以衰减为指向t[0]
的指针,即指向-(指向int的指针(、int **
的指针。然后,该指针可以用于指针算术(如减法(。
因此,从t
中减去n
会得到一个int **
,它指向10项数组开头"之前"的n
项(除非n
为零或小负数,否则BTW不是一个安全的指针,因为它将指向数组内存的有效边界之外(。
当我们引用
*t[0]
时,我们是否将int* p
引用为指针本身因为它是表的一个元素,还是我们隐含地需要指针指向插槽,而不是使指针指向另一个地方?
我不确定我是否理解这个问题。由于t[10]
是一个由10个指针(即10个int *
(组成的数组,这意味着t[0]
是该数组中的单个项,因此其类型为int *
。因此,*t[0]
取消引用数组中的第一个指针,生成指针所指向的实际int
值。
int**
的意思是
它是指向int
的指针的指针类型。如果取消引用此类型的变量t
(如以下所示:*t
(,则会得到一个指向int
的指针。如果你取消引用它两次(像这样:**t
(,你会得到一个int
。
如果有TYPE a[N];
,数组表达式a
(如果求值(将生成一个类型为T *
的指针,指向a[0]
。这有时被称为C的数组到指针的"衰减"规则。
如果TYPE
是int *
,就像您的情况一样,那么TYPE *
就是int **
。
由于数组由int *
指针组成,因此索引到数组中的指针必然是指向该元素类型的指针。
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思