是否
int **p
Run Code Online (Sandbox Code Playgroud)
和
int *p[1]
Run Code Online (Sandbox Code Playgroud)
意思是一样的吗?因为两者都可以传递给允许更改指针对象的函数,也可以通过p [0],*p来访问它们.
更新,感谢您的帮助,艰难的内存管理似乎有所不同.访问机制是否保持不变
*例如:p [0]变成*(p + 0)&*p(都指向某个东西)
谢谢
不完全的.
int **p;
Run Code Online (Sandbox Code Playgroud)
声明一个指针p,用于指向类型的对象int *,即指向int的指针.它没有分配任何存储,或者指向p任何特定的存储.
int *p[1];
Run Code Online (Sandbox Code Playgroud)
声明数组p一个指针诠释的:p"S型可以衰减到int **时,它的周围通过,但不同的是先声明,p这里有一个初始值,一些存储待用.
回覆.关于访问语法的编辑问题:是的,*p == p[0] == *(p+0)适用于所有指针和数组.
回覆.评论询问sizeof:它正确处理可以看到声明的数组,因此它给出了总存储大小.
void foo()
{
int **ptr;
int *array[10];
sizeof(ptr); // just the size of the pointer
sizeof(array); // 10 * sizeof(int *)
// popular idiom for getting count of elements in array:
sizeof(array)/sizeof(array[0]);
}
// this would always discard the array size,
// because the argument always decays to a pointer
size_t my_sizeof(int *p) { return sizeof(p); }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
497 次 |
| 最近记录: |