C 中的变量指针

Variable pointers in C

我想创建一个 C 脚本,它有一个变量指针,例如:

int main(void){
 double x = 0;
 do{
  x+=1;
  fprint("%d \n",x)
}while{x<100}
}

但我希望 x 成为指针,并且 x 所取的每个值都写入某个文件。

我认为有两件事要做,虽然我不知道如何正确地做它们:

  1. 将内存分配给指针。
  2. 创建文件并附加到它。

我不太确定您要的是什么,但这也许对您有所帮助。这里 x 是指向 y 的指针,程序在循环中递增 y 并取消引用指针 x 并将其当前值写入文件。当然,您根本不需要指针来执行此操作,这只是一个示例。

int main(int argc, char** argv) {
  int y = 0;
  // x points to variable y
  int* x = &y;
  FILE* fout = fopen("output.txt", "w");
  do {
    // dereference x and write value to file
    fprintf(fout, "%d\n", *x);
    // increment y
    y++;
  // dereference pointer x and check if value less than 100
  } while(*x < 100);
  fclose(fout);
  return 0;
}

好的,首先你没有在该代码中声明一个指针。

C 中的指针声明为:

[有效类型] * [变量名] eg:

double * age ;

这为 double 创建了一个指针定义,但没有在堆中分配内存。要初始化指针,您必须分配一些内存,并且必须告诉编译器有多少,例如:

age = malloc(sizeof(double)) ;

这让你有足够的内存 space 来存储一个 double 值,不管你构建它的系统上 double 的实际大小是多少!

在您的代码中,您必须在尝试递增指针之前取消引用指针,例如:

*age++;

变量名前的星号告诉编译器允许您访问实际数据,++ 可以完成它的工作。如果你不取消引用你很诱人,最好的情况是数据损坏,最坏的情况是你可能会导致系统崩溃。

因此您的代码应如下所示:

void main(int argc, char *argv[]){

double * x ;
x = malloc(sizeof(double));

*x = 0

do{
*x++;
  fprint("%d \n",*x)
}while{x* < 100}

}