c语言是否可以通过调用void函数来完成对数组的赋值
P.S. 下面有个答案说变量可以当数组长度,这没问题,但是题主明显用的是Visual C++,只支持最新的C++,不支持最新的C语言,所以没戏。在Windows下编程,就忘记世界上有C语言这么一回事(逃
这是语法错误,你需要写的是:template\u0026lt;int U, int V\u0026gt;void zero_matrice(double(\u0026amp;xss)){ for (auto\u0026amp; xs : xss) for (auto\u0026amp; x : xs) x = 0;}double average_delay;zero_matrice(average_delay);
但是具体到你的情况:double average_delay = {0}; // 只对0有效
■网友
double* z不完了么void zeros(int width, int height, double* buf) {long length = width * height;for(long i=0;i\u0026lt;length;i+=1)buf=0;return;}然而你这个完全可以用memset吧然后matlab的参数不可变的机制是copy on write,当函数内没有修改参数时是引用传递,函数内修改了参数就会变成值传递,而C是可以自由选择引用传递还是值传递的。
■网友
变长数组啊,c99范畴,vc没戏,并且数组在函数参数会退化为指针
如果数组参数退化成指针,则不知道步长,不行,可以强行传入步长来搞定
如果只是想初始化为0的话,直接={0},不必如此麻烦
■网友
谢邀。图上的不可行,因为没有在调用前声明函数
■网友
必须要引用或者传入指针,你这样是不行的还有你声明的数组后面的下标不能是变量,除非你自己申请
■网友
看图IDE貌似不支持C99,那个红色的波浪线…题主问的是是否可以用这个函数对传入的参数进行修改,但是由于这个程序有一些问题:1.譬如没有声明下面那个函数,导致编译器可能不认识 main() 中引用的 zeros …那个函数,可能运行不了。2. 再譬如 C 语言到了 C99 这一版之后才支持变量作为数组长度,但是 IDE 的支持程度不一,可能运行不了。于是大家好像忽视了题主想要了解的问题,我冒昧地回答一下:是可以的,这和 void 没有关系,跟函数是否返回值,返回什么类型的值没有关系。关键在于参数究竟是某个具体值还是指向待修改值的地址,可以通过传递指向待修改值的地址,比如指针,或者程序中,数组名(数组第一个元素的地址)这样的方式来访问并操作存储在该地址中的值,以达到修改数组的目的。但是你同样无法修改传入的地址这个值,除非你传入的是指向地址的地址,也就是指针的指针(??;昏了吗?(??????) ?详见各种 C 语言资料中讲指针的部分,特别是指针与函数参数,指针与数组部分。顺便问一句,你的 C 语言课本莫不是谭浩强(\u0026#39;?ω?\u0026#39;) ,如果是,还是换一本吧…
■网友
“按我的理解,调用函数时不管函数内部做了什么运算,都不应该会影响主函数中的变量。”确实,函数对形参的修改不会影响到实参,但是函数可以通过指针的形式间接修改函数外的变量值。简单地说,在定义zeros_matrice函数的时候,乍一看参数列表中写的是double类型的二维数组,但事实上,传入函数的是某数组(此例中为average_delay)的首元素地址,是一个指针,而非整个数组。初学者可以简单理解为,函数对传入的数组的修改是会影响到函数外实参数组的。建议题主去看看C语言数组、指针、函数形参实参、作用域相关知识。
■网友
memset(array, 0, sizeof(double) * x * y)
■网友void zero_matrix(int x, int y, double (*p)) {\tfor (int i = 0; i \u0026lt; x; i++) {\t\tfor (int j = 0; j \u0026lt; y; j++) {\t\t\t*(p+j) = 0;\t\t}\t}}
函数改成这样;调用改成这样(不置前就要声明哦):zero_matrix(2,2,\u0026amp;average);
推荐阅读
- 傻子当国有银行行长都能赚钱这句话是否是对的
- OC为何跌出语言榜前十
- 网通社|喜欢蔚来的越来越多了 连续四个月交付创新高 你是否愿意放弃特斯拉选择它?
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 人民车市|新语言、新起点,捷达VS7 强势入局
- 疾病|医生不避讳:4种疾病可以通过性传播,思想开放的人要小心了
- 豆瓣为啥受到同志社群的欢迎
- |PHEV车款没比较环保,新能源是否存在谎言呢?
- 运营商收取的流量费用价格是否合理
- C语言 指针引用数组的地址问题