二级题目总结

1.赋值问题:
一般是从左到右,所以左边最好赋值就是A,D,之后,对于C,他就是赋值语句。
在这里插入图片描述
对于C选项是b==c是一个值,对于B,我觉得是(a= =b),如果是a=b是对的。

在这里插入图片描述
2.指针问题:


#include<stdio.h>
int k=5;
void f(int *s)
{
	*s=7;
}
int main()
{
int m=3;
f(&m);
printf("%d,%d\n",m,k);	
}
         结果为:7,5
*****************************************************************************
*********************************************************************
#include<stdio.h>
int k=5;
void f(int *s)
{
	s=&k;
	*s=7;
}
int main()
{
int m=3;
f(&m);
printf("%d,%d\n",m,k);	
	
	
}

结果:3,7
因为在f()函数中重新赋值了,所以和前面的不一样。


在这里插入图片描述
*ptr++:就是得到ptr,就是等于 *(ptr++)
++ptr:就是ptr后一个值,就是等于(++ptr)
(*ptr)++:就是取ptr值加1.
++(*ptr):也是取ptr值再加一。

在这里插入图片描述
就是int (* p)[4]:就是p指向对象为整形的含有4个元素的一维数组。
对于定义时int (* p)[4],才是指向一维数组,而在应用时,如下:
(*p)[3]:是p所指的行中的序号为3的元素。

3.递归问题:

在这里插入图片描述
就是第一次,9+sum(9,2),2->9+1+sum(1,1)->9+1+2;
每一次会指针首元变换。
在这里插入图片描述
和第一个一样都可但是不同的h是array【0】开始的。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4.结构体问题:
在这里插入图片描述

注意这是一个无返回值的结构体,以后会有对比

在这里插入图片描述

++(p.a)就是先把a值赋值 在加1.

在这里插入图片描述

#include<stdio.h>
int main()
{
	int a[4]={1,0,4,9},*p=a;
	printf("%d\n",++(*p));
}
 2

#include<stdio.h>
struct complex
{
	int real;
	int unreal;
	float un;
} data1={1,8,2.2},data2;
int main()
{
	data2.real=data1.un;
	printf("%f",data2.real);
}
错误,不可以不同类型的赋值

对于结构体可以整体赋值。

在这里插入图片描述

在这里插入图片描述

#include<stdio.h>
int fun(int a)
{
	a=2;
	return a++;
}
int main()
{ int b=1,c;
 c=fun(b);
printf("%d",c);
}
2
有返回值类型int ,所以a的值会改变。

#include<stdio.h>
int fun(int a)
{
	a=2;
	return a++;
}
int main()
{ int b=1,c;
 c=fun(b);
printf("%f",c);
}
0,就是错误

有返回值,所以值变化。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
无返回值的但是有数组,对被调函数的数组改变就是对主调数组的改变。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

明确指针没有&就是取值。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

#include<stdio.h>
struct A
{
	int real;
	int unreal;
} complex[2]={1,6,9,4},*t;
int main()
{   t=complex; 
  printf("%d",(t++)->real);
  printf("%d",t->real);

}
19


#include<stdio.h>
struct A
{
	int real;
	int unreal;
} complex[2]={1,6,9,4},*t;
int main()
{   t=complex; 
  printf("%d",++(t->real));
  printf("%d",t->real);

}
22
#include<stdio.h>
struct A
{
	int real;
	int unreal;
} complex[2]={1,6,9,4},*t;
int main()
{   t=complex; 
  printf("%d",t->real++);
  printf("%d",t->real);

}
12

#include<stdio.h>
struct A
{
	int real;
	int unreal;
} complex[2]={1,6,9,4},*t;
int main()
{   t=complex; 
  printf("%d",++t->real);
  printf("%d",t->real);

}
22

#include<stdio.h>
struct A
{
	int real;
	int unreal;
} complex[2]={1,6,9,4};
int main()
{ 
struct A *p=complex;
   
  printf("%d",++p->real);

}//明白struct A *p=&complex;不对,然后,在struct定义时不可以定义*p=complex;
2

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
void fun(int *a)
{
	a=(int *)malloc(sizeof(int));
 *a=2;
}
int main()
{ 
   
int b=1,*p=&b;
fun(p);
printf("%d",*p);


}
1


#include<stdio.h>
#include<stdlib.h>
int main()
{ 
   int b=1,*p=&b;
p=(int *)malloc(sizeof(int));
*p=2;
printf("%d",*p);
}
2

#include<stdio.h>
void fun(int *a)
{
*a=2;
}
int main()
{ 
 int b=1,*p=&b;
fun(p);
printf("%d",*p);
}
2

#include<stdio.h>
#include<cstring>
#include<stdlib.h>
void fun(char *p)
{
	strcpy(p,"wer");
}
void fun2(int *s)
{
	s=(int*)malloc(sizeof(int ));//如果屏蔽,则最后输出9
	for(int i=0;i<5;i++)
     	*(s+i)=9;
}
int main()
{
	char s[10]="verygood",*ps=s,a[20]="beijinghangtan";
	int l[5]={1,2,3,4,5};
	ps+=4;
	*ps='t';//*ps="er",错误 .	ps="tytu";可以但是只是地址 
	//ps="tytu";	puts(ps);就是tytu,那要是puts(s);就是verygood
	puts(s);//verytood
	putchar('\n');//其实puts也有\n
	strcpy(a,s);
	puts(a);//输出verytood
	fun(a);
	putchar('\n');
	puts(a);//输出wer
	putchar('\n');
	fun2(l);
	printf("%d",l[2]);//3
	
 } 






#include<stdio.h>
#include<stdlib.h>
#include<cstring>
typedef struct stu
{
	char name[10],gender;
	int score;
}STU;
void f(char a[])
{
	strcpy(a,"Qian");
}
int main()
{ 
   STU a={"Zhao",'m',290},b;
   b=a;
   f(b.name);
   b.gender='f';
   b.score=350;
   printf("%s,%c,%d",a.name,a.gender,a.score);
   printf("%s,%c,%d",b.name,b.gender,b.score);

}
   
Zhao,m,290Qian,f,350

#include<stdio.h>
#include<stdlib.h>
#include<cstring>
typedef struct stu
{
	char name[10],gender;
	int score;
}STU;
void f(char *p)
{
	strcpy(p,"Qian");
}
int main()
{ 
   STU a={"Zhao",'m',290},b;
   b=a;
   f(b.name);
   b.gender='f';
   b.score=350;
   printf("%s,%c,%d",a.name,a.gender,a.score);
   printf("%s,%c,%d",b.name,b.gender,b.score);


}
Zhao,m,290Qian,f,350

在这里插入图片描述
结构体类型可以是结构体,定义结构体类型时不会分配空间。
在这里插入图片描述
指针赋值字符串:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值