相关疑难解决方法(0)

将指针强制转换为Array(int*to int [2])

如何将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)

c++ arrays pointers

22
推荐指数
1
解决办法
5万
查看次数

是(int*)和(int [])是一样的吗?

可能重复:
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)

c

0
推荐指数
1
解决办法
406
查看次数

标签 统计

arrays ×1

c ×1

c++ ×1

pointers ×1