C 中的变量指针
Variable pointers in C
我想创建一个 C 脚本,它有一个变量指针,例如:
int main(void){
double x = 0;
do{
x+=1;
fprint("%d \n",x)
}while{x<100}
}
但我希望 x 成为指针,并且 x 所取的每个值都写入某个文件。
我认为有两件事要做,虽然我不知道如何正确地做它们:
- 将内存分配给指针。
- 创建文件并附加到它。
我不太确定您要的是什么,但这也许对您有所帮助。这里 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}
}
我想创建一个 C 脚本,它有一个变量指针,例如:
int main(void){
double x = 0;
do{
x+=1;
fprint("%d \n",x)
}while{x<100}
}
但我希望 x 成为指针,并且 x 所取的每个值都写入某个文件。
我认为有两件事要做,虽然我不知道如何正确地做它们:
- 将内存分配给指针。
- 创建文件并附加到它。
我不太确定您要的是什么,但这也许对您有所帮助。这里 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}
}