我的编程历史是用C和CPython写的。请在这里耐心听我说。
为了帮助我学习C++,我正在将我的一个旧C程序转换为使用C++ OOP,但它的工作方式并不是我想要的那样。我不关心速度。我只关心学习。
下面是我想放入校验和类中的旧C代码:
//This is the standard CRC32 implementation
//"rollingChecksum" is used so the caller can maintain the current
//checksum between function calls
unsigned int
像C++模板这样的参数化类型是一件很好的事情,但大多数时候它们只能被其他类型参数化。
但是,在C++中有一种特殊情况,可以将模板参数化为整数。例如,固定长度数组是一个典型的用例:
template<typename T, int SIZE> class FixedArray
{
T m_values[SIZE];
public:
int getElementCount() const { return SIZE; }
T operator[] (int i) const {
if (i<0 || i>=SIZE)
在C编程中,比较两种不同类型的指针,如下所示:
int i = 1;
double d = 2.5;
int *ip = &i;
double *dp = &d;
if(ip != dp) // is it UB?
printf("Not same\n");
C中是否存在ip != dp未定义的行为?
在许多编程语言(包括、和)中,可以在内部放置一个数组。在这里,我试图把一个C整数数组放在它的第三个索引处,但是我不确定在C编程语言中是否支持这个:
#include <stdio.h>
int main(void) {
int arr[] = {1, 1, 2};
arr[2] = arr; //now I'm trying to put arr into itself.
printf("%i", arr[2]); //this prints a negative number each time I run the program
我有以下结构定义:
struct vec { // 2-dim vector
long d[2];
};
struct lineSegment { // a 2D-LineSegment with start/end points A, B
vec A, B;
};
struct polygon { // a 2D-Polygon
vec *points;
polygon(unsigned int points) {
vec = new vec[points];
}
polygon() {}
~polygon() { de
我不得不编写一个C程序,它有600多行代码和大约25个函数。这是我编写的最长的C代码。
我注意到其中一些函数有5个以上的参数。直接从main()调用的对象有更多的参数。它离main()越远,就越少。
我还注意到,我经常不得不将参数传递给函数,并不是因为该函数直接使用该参数,而是该函数调用了另一个需要该参数的函数。
所以看起来就像
void f1(int a, int b,..., int bar){
int foo = f2(bar); // the only time 'bar' is used in f1
.
.
.
}
我试图最小化全局变量
我在返回动态分配的两个数组时遇到了问题。我有一个外部文件读取数组的大小。(在我的例子中是20),这就是我使用动态分配的数组时的数组大小。
同样,一旦我返回它们,我当前的语法是否正确,或者是否有我应该更改的内容。
以下是我的代码
int main (void)
{
int size;
int notFound = 0;
int accountNumber = 0;
int results;
int * accountPtr = nullptr;
double * balancePtr = nullptr;
size = readFi