我之前已经问过这个问题,但是我不能完全理解我在这里做错了什么
int* arr[2];
arr = (int (*)[2]) malloc(sizeof(int) * size);
为什么视觉工作室告诉我表达式必须是可修改的左值?我正在尝试创建一个具有恒定列大小的数组,因为它总是两个,但行会有所不同。
答案 0 :(得分:2)
arr
是一个指针数组。初始化后,您无法为其分配任何内容。由于您尝试将其值设置为对malloc
的调用的返回值,因此您可能希望它是指向数组的指针。在这种情况下,请使用:
int (*arr)[2];
此外,请勿投放malloc
的返回值。请参阅Do I cast the result of malloc?。
使用
int (*arr)[2];
arr = malloc(sizeof(*arr) * size);
// ^^^^^^^^^^^^ We are speculating this is what you need,
// not sizeof(int)
如果您希望arr
指向15 x 2
个对象的数组,则需要使用:
arr = malloc(sizeof(*arr) * 15);
答案 1 :(得分:0)
你有一个指针数组....该数组不能用作指针本身,只有数组条目是指针。
你需要一个指向指针的指针int **
,除非你想要一个整数数组,那么你只需int* arr
答案 2 :(得分:0)
您考虑使用结构吗?然后语法更直接。
Class.forName("com.mysql.jdbc.Driver").newInstance();