您的位置:

奇怪的c语言题,c语言易错题

本文目录一览:

一个很简单但很奇怪的C语言问题

你的函数的形参传的是值,在进入函数时为struct st t分配空间,在函数结束后该空间被释放了,所以是乱码

试试用引用

char *f(struct st t);//声明

char* f(struct st t){}//定义

一条奇怪的c语言题,在visual C++上编译不了

typedef struct type // 前面漏了typedef

{

long x[2];

short y[4];

char z[8];

}MYTYPE;

//MYTYPE them;

int main()

{

struct type them;

printf("%d\n",sizeof(them));

return 0;

}

这道题主要看你在多少位的机器上运行,我在32位的机器上运行是24

2个long,8个字节

4个short,8个字节

8个char,8个字节

共24个字节,这里没涉及字节对齐的问题

奇怪的 C 语言

首先指出,你的C语言写法很不符合C语言规范。请注意正确书写。函数定义再调用之后,请在函数调用之前先进行声明。你没有。第二,每个函数需要有返回值。你的函数都没用返回值,如果不需要返回值,请将返回值写成void,你没用。

回答

问题一:

在main()函数中三次调用increment();每次调用的时候在increment() 内部都重新分配x的空间,都重新对x复制0,然后在x+=1;执行完一个increment(); 后释放空间。此时的x就没了。再次调用,再次分配空间,再次赋值。

问题二:把你的程序修改成C语言规范的。的输出结果是:10,20,40,40

程序为:

#includestdio.h

int x1=30,x2=40;

void sub(int x,int y);

void main()

{

int x3=10,x4=20;

sub(x3,x4);

sub(x2,x1);

printf("%d,%d,%d,%d\n",x3,x4,x1,x2);

}

void sub(int x,int y)

{

x1=x;

x=y;

y=x1;

}

一条C语言的题目。怪怪的

你看的应该是例题,这个题目就是考察你对于同名变量的鉴别。

1 x,y,z,w不是全局变量吗?怎么又重新定义了static?

他就是这么定义,然后你使用的时候根据作用域不同,实际使用的是static x 和其他 的函数内定义的变量,也就是全局的被覆盖了。

2 x和p函数里面的*y什么关系?感觉好混乱,求解释

p函数的x y是实参,定义的void p(int *y, int x)是形参。

赋值的时候,严格按照第一个给第一个,第二个给第二个的方法传递,不要被名字混淆。

严格来说,这样的代码很不规范,但是不影响编译。

只是很难维护和理解。

纯手打,采纳哦