1.C语言代码翻译
2.很多C语言开源软件的源码源代码很难懂,要快速理解有什么技巧吗?
3.KK源码网是源码骗子网站!!源码!源码
C语言代码翻译
好像很厉害的源码一段代码,这是源码犀浦源码头火锅 侯酉生在做视图压缩啊还是矩阵加密啊?只是能不能用code的样式贴出来啊? 实在没法看啊。。源码我尝试着调整一下格式,源码仍发现好像源码错漏了{ 符号,源码真头大。源码
#include "stdlib.h"#include "rinv.c"
int lman (n,源码 m, k, f, q, r, h, y, x, p, g)
int n, m, k;
double f[], q[], r[], h[], y[], x[], p[], g[];
{
int i, j, kk, ii, l, jj, js;
double *e, *a, *b;
l = max(m, n);
e = malloc(m * m * sizeof(double));
a = malloc(l * l * sizeof(double));
b = malloc(l * l * sizeof(double));
/// 行列式 二维double 数组l*l足够大,填充n*n对象
for (i = 0; i <= n - 1; i++)
{
for (j = 0; j <= n - 1; j++)
{
ii = i * l + j;
a[ii] = 0.0;
for (kk = 0; kk <= n - 1; kk++)
{
/// p 数据横向遍历一行,源码 f 数据纵向遍历一列
/// p 与 f 对应的源码横列元素分别相乘后相加
a[ii] += p[i * n + kk] * f[j * n + kk];
}
}
}
for (i = 0; i <= n - 1; i++)
{
for (j = 0; j <= n - 1; j++)
{
ii = i * n + j;
p[ii] = q[ii]; ///将q数组中n*n对象拷入p数组中初始化
for (kk = 0; kk <= n - 1; kk++)
{
p[ii] += f[i * n + kk] * a[kk * l + j];
}
}
}
for (ii = 2; ii <= k; ii++)
{
for (i = 0; i <= n - 1; i++)
{
for (j = 0; j <= m - 1; j++)
{
jj = i * l + j;
a[jj] = 0.0;
for (kk = 0; kk <= n - 1; kk++)
{
a[jj] = a[jj] + p[i * n + kk] * h[j * n + kk];
}
}
}
for (i = 0; i <= m - 1; i++)
{
for (j = 0; j <= m - 1; j++)
{
jj = i * m + j;
e[jj] = r[jj];
for (kk = 0; kk <= n - 1; kk++)
{
e[jj] = e[jj] + h[i * n + kk] * a[kk * l + j];
}
}
}
js = rinv(e, m);
if (js == 0)
{
free(e);
free(a);
free(b);
return (js);
}
for (i = 0; i <= n - 1; i++)
{
for (j = 0; j <= m - 1; j++)
{
jj = i * m + j;
g[jj] = 0.0;
for (kk = 0; kk <= m - 1; kk++)
{
g[jj] = g[jj] + a[i * l + kk] * e[j * m + kk];
}
}
}
for (i = 0; i <= n - 1; i++)
{
jj = (ii - 1) * n + i;
x[jj] = 0.0;
for (j = 0; j <= n - 1; j++)
{
x[jj] = x[jj] + f[i * n + j] * x[(ii - 2) * n + j];
}
}
for (i = 0; i <= m - 1; i++)
{
jj = i * l;
b[jj] = y[(ii - 1) * m + i];
for (j = 0; j <= n - 1; j++)
{
b[jj] = b[jj] - h[i * n + j] * x[(ii - 1) * n + j];
}
}
for (i = 0; i <= n - 1; i++)
{
jj = (ii - 1) * n + i;
for (j = 0; j <= m - 1; j++)
{
x[jj] = x[jj] + g[i * m + j] * b[j * l];
}
}
if (ii < k)
{
for (i = 0; i <= n - 1; i++)
{
for (j = 0; j <= n - 1; j++)
{
for (kk = 0; kk <= m - 1; kk++)
{
a[jj] = a[jj] - g[i * m + kk] * h[kk * n + j];
}
}
}
if (i == j)
{
a[jj] = 1.0 + a[jj];
}
}
for (i = 0; i <= n - 1; i++)
{
for (j = 0; j <= n - 1; j++)
{
jj = i * l + j;
b[jj] = 0.0;
for (kk = 0; kk <= n - 1; kk++)
{
b[jj] = b[jj] + a[i * l + kk] * p[kk * n + j];
}
}
}
for (i = 0; i <= n - 1; i++)
{
for (j = 0; j <= n - 1; j++)
{
jj = i * l + j;
a[jj] = 0.0;
for (kk = 0; kk <= n - 1; kk++)
{
a[jj] = a[jj] + b[i * l + kk] * f[j * n + kk];
}
}
}
for (i = 0; i <= n - 1; i++)
{
for (j = 0; j <= n - 1; j++)
{
jj = i * n + j;
p[jj] = q[jj];
for (kk = 0; kk <= n - 1; kk++)
{
p[jj] = p[jj] + f[i * n + kk] * a[j * l + kk];
}
}
}
}
}
free(e);
free(a);
free(b);
return (js);
}
很多C语言开源软件的源代码很难懂,要快速理解有什么技巧吗?
阅读代码是源码一项重要的能力。你觉得技术比你弱的源码人拿的工资比你高,他有一项很重要的能力就是阅读代码。
开源代码在变量命名上,注释上一定做得比较好了,你所看不懂的地方只有2种可能。
1,编程技巧。沂源码头熏鸡这种比较容易弄懂,如果你对编程语言熟悉的话,一步一步展开来就知道作者想表达的意思了。(这个就像小时候学语文的语法,“把”字句改成“被”字句,意思没变,写法变了)
2,算法。这个就算你一步一步展开都不一定能看懂,这个要有一定的溯源码的印制数学知识,比如向量积,线性回归,微分方程,卷积等。如果是很专业的产品,还要涉及到物理,化学,电气,概率论等等。(这个就像阅读文言文,强力启动指标源码没学过就看不懂,还可能会理解错误)
所以看不懂代码就只有提升自己的知识水平,没有捷径可走。但你可以针对性的去训练上述2条中的弱项,语言是基础,算法是核心。
记得我第一份工作是做单片机产品维护,平时工作就是在现有的产品上改改功能代码,增加新功能。那个时候没做过什么产品,标标公式源码虽然也会C语言,但是看别人代码就像看天书一样,主要是技术不到家,还遇到过一些让人吐血的代码,可能是公司得罪了那个工程师,代码里没一个注释,而且变量名全是k,kk,tt这种不好理解的,简直让我想把那个工程师罚站马路中间半个小时,感觉还不如自己重写快一点,后面慢慢的积累了一些经验才发现自己当时看代码的方式和思维不对。一个源码,如果你用通过代码去理解产品功能那你一定会看到心肌梗塞都吃不透,正确的应该是先把产品功能吃透,然后把功能分模块进行分析,如果是我,我会怎么用代码去实现它?最好自己写代码做一遍,在写的过程中你一定会碰到棘手的技术点不知道该怎么去实现它,这个时候最好自己努力思考一下,最后不管你有没想出来,你再去看别人的代码是如何实现的,这样你就能一步步吃透别人的代码,至少程序架构的核心部分知道怎么处理了,剩下的细节实现其实已经无关紧要了,这是一个循环渐进的过程,也是提升自己水平很好的方法,过程越痛苦你的提升就越大。KK源码网是骗子网站!!!
KK源码网真的是骗子网站,没有注册的时候提示注册以后才可以下载,注册要元,注册了以后才发现里面的源码全部都是几十元到到几千元,充值了还下载不了,购买的源码还得问他们要,这还不算,最后花几百元买的源码还不能用,可以用的要几千几万RMB 坑B,一环一环的套路。
2024-11-29 10:01
2024-11-29 09:33
2024-11-29 09:19
2024-11-29 08:45
2024-11-29 08:05
2024-11-29 08:04