#include <stdio.h> void fun(int n); int main() { int a = 8; fun(a); printf("%d", a); return 0; } void fun(int n) { n++; return; }
时间: 2024-04-23 07:23:12 浏览: 83
这段代码与之前的代码有些许不同,但是主要作用是相同的。它也是将变量a的值加1,然后输出a的值。具体来说,程序首先定义了一个整型变量a并初始化为8,然后调用函数fun,并将a的值作为参数传递给函数。函数fun接收一个整型参数,将该参数的值加1。由于参数传递是按值传递的,所以函数fun内部对参数的修改不会影响到外部的变量a。最后,程序再次输出变量a的值,此时a的值仍然为8。
相关问题
#include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> #include<unistd.h> #include<pthread.h> int var=0; void *fun(void *); int main() { pthread_t id; int res = pthread_create(&id,NULL,fun,NULL); assert(res == 0); for(int i = 0;i < 10000; i++) { var++; printf("parent is %d\n",var); } exit(0); } void* fun(void *arg) { for(int i = 0;i < 10000; i++) { var--; printf("child is %d\n",var); } }
这是一个使用 pthread 线程库的 C 语言程序,其中包含了一个主线程和一个子线程。
主函数中创建了一个线程 id,并调用 pthread_create 函数创建一个新的线程。该函数的第一个参数是线程 id,第二个参数是线程属性,第三个参数是线程函数,最后一个参数是传给线程函数的参数。在这个程序中,线程属性为 NULL,线程函数为 fun,传递的参数为 NULL。
主线程和子线程都有一个 for 循环,循环的次数为 10000,每次循环都将变量 var 的值加一或减一,并输出当前的 var 值。可以看到,主线程和子线程交替执行,输出的结果也是交替的。
由于主线程和子线程是并发执行的,因此输出的结果可能会出现不同的顺序,这是正常的现象。
#include< stdio.h> void fun(int x, int y) { int t; t = x; x = y; y = t; } void main() { int a=1,b=2; fun (a,b); printf("%d,%d\n",a,b); }
这段代码的输出结果为“1,2”。
原因是调用函数fun时,传递的是a和b的拷贝,函数内部对x和y的操作不会影响到a和b的值。在函数fun中,x和y的值交换了,但是并没有改变a和b的值。
因此,函数结束后,a和b的值还是原来的值,分别为1和2。在main函数中,printf函数输出a和b的值,因此输出结果为“1,2”。
阅读全文