怎么强制转换为一个指向数组的指针
如何强制转换为一个指向数组的指针?
#include <stdio.h>
int
main()
{
int* ip = (int*)calloc(sizeof(int), 9);
int i = 0;
int (*ap)[3];
for(; i < 9; ++i)
ip[i] = i;
ap = ip; //这里报警告,incompatible pointer assignment
for(i = 0; i < 3; ++i)
{
int j;
for(j = 0; j < 3; ++j)
printf( "%d ", ap[i][j]);
putchar( '\n ');
}
free(ip);
}
强制转换为一个指向3个元素的int数组类型指针,如何转换?
------解决方案--------------------
指针不能那样操作,只能赋值给它,而不是地址。
------解决方案--------------------
typedef int (*p)[3];
ap = (p)ip;
------解决方案--------------------
vc6.0 没问题
#include <stdio.h>
#include "stdlib.h "
typedef int (*p)[3];
int
main()
{
int* ip = (int*)calloc(sizeof(int), 9);
int i = 0;
int (*ap)[3];
for(; i < 9; ++i)
ip[i] = i;
ap = (p)ip;
for(i = 0; i < 3; ++i)
{
int j;
for(j = 0; j < 3; ++j)
printf( "%d ", ap[i][j]);
putchar( '\n ');
}
free(ip);
}
#include <stdio.h>
int
main()
{
int* ip = (int*)calloc(sizeof(int), 9);
int i = 0;
int (*ap)[3];
for(; i < 9; ++i)
ip[i] = i;
ap = ip; //这里报警告,incompatible pointer assignment
for(i = 0; i < 3; ++i)
{
int j;
for(j = 0; j < 3; ++j)
printf( "%d ", ap[i][j]);
putchar( '\n ');
}
free(ip);
}
强制转换为一个指向3个元素的int数组类型指针,如何转换?
------解决方案--------------------
指针不能那样操作,只能赋值给它,而不是地址。
------解决方案--------------------
typedef int (*p)[3];
ap = (p)ip;
------解决方案--------------------
vc6.0 没问题
#include <stdio.h>
#include "stdlib.h "
typedef int (*p)[3];
int
main()
{
int* ip = (int*)calloc(sizeof(int), 9);
int i = 0;
int (*ap)[3];
for(; i < 9; ++i)
ip[i] = i;
ap = (p)ip;
for(i = 0; i < 3; ++i)
{
int j;
for(j = 0; j < 3; ++j)
printf( "%d ", ap[i][j]);
putchar( '\n ');
}
free(ip);
}