如何将int*转换或转换为int [x]?
作为一个例子,我试图将指针int* c = new int[x]转换为数组int b[2]
int a = 1;
int b[2] = { 2, 3 };
int* c = new int[b[1]];
c[0] = b[0];
c[1] = b[1];
c[2] = a;
Run Code Online (Sandbox Code Playgroud)
首先,我知道我可以遍历指针和数组.因此,将指针转换为具有[]运算符的数组,以索引指针和数组,在迭代时将指针元素分配给数组元素(例如arr[i] = p[i]).我想知道在更少的代码行中是否可以实现相同的结果.
我试图自己搞清楚,所以我做了一个快速的程序,以确保我确切地知道我想要放置什么和在哪里.输出如下:
Address of {type: int} &a = 0031FEF4; a = 1
Address of {type: int[2]} &b = 0031FEE4; b = 0031FEE4
Address of {type: int[2]} &b[0] = 0031FEE4; b[0] = 2
Address of {type: int[2]} …Run Code Online (Sandbox Code Playgroud) 可能重复:
gcc编译错误:cast指定数组类型
我想检查(int*)和(int [])的区别.当我编译以下代码时,第一行就可以了.但对于第2行,我的编译器给出以下错误:
test.c:10: error: cast specifies array type
Run Code Online (Sandbox Code Playgroud)
请问任何人请告诉我这个错误的含义以及我在哪里错了?
#include<stdio.h>
void abc(int *a)
{
int i;
for(i=0;i<2;i++)
{
printf("%d",((int * )a)[i]); //(1)
printf("%d",((int [])a)[i]); //(2)
}
}
int main()
{
int b[2]={0,1};
abc(b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)