c - 动态定义和分配指针
问题描述
我想动态定义和分配指针:
#include<stdio.h>
#define def_var(type,name,i) type name##i
#define var(name,i) name##i
void main(){
int i;
for (i=0;i<10;i++){
def_var(float,*ww,i)=NULL;
}
for (i=0;i<10;i++){
var(ww,i)=(float *)malloc(100);
}
}
但是当我编译它时,会出现很多错误。有人可以帮忙解决吗?
解决方案
你不能做你想做的事。预处理器宏在编译时扩展,它们不能依赖于运行时变量值。所以
def_var(float,*ww,i)=NULL;
扩展为
float *wwi = NULL;
它不会也不能用i
变量的值替换,它只是执行文本替换。
此外,变量声明具有块作用域,因此循环内声明的任何变量for
都会在循环结束时消失。
只需声明一个指针数组。
float *ww[10];
for (int i = 0; i < 10; i++) {
ww[i] = malloc(100 * sizeof(float *));
}
推荐阅读
- c - 使用 GLUT 库的突围游戏 - 改进
- mysql - SELECT 显示一个包含列名而不是里面的数据的列表
- python - 如何使用 Sympy 在 Python 中使用 while 循环对等式进行 5 次微分,每次运行微分一次?
- arrays - 从数组 c 中选择随机线
- html - 儿童定位的宽度百分比标准是什么:绝对
- ssl - Hostgator:SSL 信息在我的服务器上 SSL/TSL 管理器和 SiteLock/其他任何地方不匹配
- python - Python语法问题 - 变量名前的冒号
- java - 有没有一种简单的方法来编写这段代码?
- python - 使用包含多个值的列从 DataFrame 创建 Edgelist
- r - 对热图的单元格进行排序