c语言.求解答.

#include<stdio.h>
typedef struct {int b,p;}A;
void f(A c)
{int j;
c.b+=1;c.p+=2;
}
main()
{int j;
A a={1,2};
f(a);
printf("%d,%d\n",a.b,a.p);
}

这里f不能改变a,b的值

#include<stdio.h>
#define N 4
void fun(int a[][N],int b[])
{int i;
for(i=0;i<N;i++)
b[i]=a[i][i]-a[i][N-1-i];
}
main()
{
int x[N][N]={{1,2,3,4},{5,6,7,8,},{9,10,11,12},{13,14,15,16}},y[N],i;
fun(x,y);
for (i=0;i<N;i++)
printf("%d,",y[i]);
printf("\n");

为什么这里fun能改变y[i]的值呢?

void f(A c) //这里传的普通变量的复制品,程序中改变的是复制品的值

void fun(int a[][N],int b[]) //这里传的是指针(数据地址) , 程序改变的是地址中的内容

说白了,就是fun传的是个房间号,通过房间号你进入房间,改变里面的东西,也就是改变了原房间中的内容。而f传的是个物品(复制品),对这个复制品进行更改,对原物无影响。追问

我刚才查一下书,理解了,谢谢了.

温馨提示:内容为网友见解,仅供参考
无其他回答

C语言入门题目,求详细易懂的解答过程。
答案为第一行:Tony。解答:for循环共循环2次,然后strcpy(a,b)比较两串字符大小,如果strcpy值大于0,则a大于b。具体的比较是看字符串的字母的ASCII码的大小,如果相同,再继续比较第二个,这个不赘述。主要看一下name[],对于一维数组来讲,它是元素,对于二维数组来讲,它不是具体的元素,而是代...

C语言菜鸟求高手解答...
1. 第一个问题似乎是一个关于C语言条件判断的疑问。你需要明确表达你的问题,以便得到具体的解答。2. 在C语言中,`m++` 表示先使用变量 `m` 的值,然后将 `m` 的值加1。所以,表达式 `m++ > 5` 首先将 `m` 的值(初始为5)用于比较,然后 `m` 自增。3. 由于 `m` 的初始值是5,...

C语言作业,急急急求解答
1.优化程序代码:检查程序中是否存在冗余、重复计算或者低效算法等因素,对代码进行优化和精简,以提高程序的运行效率。2.延迟加载数据:考虑将一些不必要立即加载的数据进行延迟加载,减少程序启动时的数据负担。3.异步加载数据:使用异步加载技术,将一些需要联网获取的数据离线处理,并在后台进行加载,避免程...

c语言.求解答.
void f(A c) \/\/这里传的普通变量的复制品,程序中改变的是复制品的值 void fun(int a[][N],int b[]) \/\/这里传的是指针(数据地址) , 程序改变的是地址中的内容 说白了,就是fun传的是个房间号,通过房间号你进入房间,改变里面的东西,也就是改变了原房间中的内容。而f传的是个...

C语言编程作业,求解答
作业1:result(int)= c (char) * i (int) + f (float) \/ d (double) -(f + i);第一步:f+i, 一个float和int相加,按精度高的float进行计算,结果为float result = char * int + float\/double - float;第二步:char * int, 他们都是整数相加为int result =int + float\/double...

c语言题求解答
1、因为逻辑运算是“左结合律”和“ 短路求值 ”的,另外C语言保证逻辑运算的求值顺序是从左往右的。2、第一个printf()没什么好说的,赋值如此,所以x=-1 y=-1 z=-1 3、第二个printf(),x=-1 y=0 z=0,要说明一下:++y&&++x||++z;它的运算过程先算++y它的值为0,决定了++y && ...

C语言问题,求大佬解答
小数类型 和=0,平均值;重复{ 图形输入整数() => 甲;如果( 甲 大于 0 ){ 和 += 甲;如果(个数 < 最大输入个数) 输入数[个数 ++] = 甲;} }直到 甲 等于 0;图形输出词语(“输入的正整数个数为:”);图形输出整数(个数,10);图形换行();平均值 = 和 除 个数;图形...

C语言 求解答
【第一行】:x=1,y=1,z=1;if((x=2)&&(y=2)&&(z=2))首先,x=2是赋值,执行后x==2,并且此等式的值为2,所以if (x=2)的结果是true。其次,按照if的判断规则,遇到a&&b&&c这样的判断,当a为true后,会进行b的判断,如果b也为true,就继续进行c的判断。所以这一行会依次进行x=2...

C语言题目,求详细解答。
答案是:x=5,y=4,a=1;过程:当x=3,y=6时 执行while(x(3)++!=(y=5))a+=1; (a=1);if(y<x) break; (因为y=5,x=4,所以不成立,因此不执行)注意:这时x因为(x++)所以,x=4;继续执行while(x++(4)!=(y=4))(因为上面y通过想减已经为5了,再减一,等4,与x...

C语言题目,求大佬解答
被2整除的数有7个,被5整除的数有1个,所以count为8.数组被赋了10个数据,所以K数组的第11个数为0,跳出循环,对应K[10],所以i为10.答案B

相似回答