第一个:
int a=1;//在全局数据区
int main()
{
int b=1,i; //main函数的栈上,b、i、c的地址连续
char *c=NULL; //c仍在main函数的栈上,但它是个指针,具体指向的内容不在这里
c=(char*)malloc(8); //c指向的地方有内容了,这些内容在main函数的堆上
printf("&a=%u\n",&a);
printf("&b=%u\n",&b);
printf("&i=%u\n",&i);
printf("&c=%u\n",&c);
printf("c=%u\n",c);
system("pause");
return 0;
}
运行结果:
&a=4288516
&b=1245024
&i=1245012
&c=1245000
c=3889536
第二个:
union{
int a1[2];
long b1;
short c1[5];
char d1[8];
}UNION_TEST;
int main()
{
printf("sizeof(UNION_TEST)=%d\n",sizeof(UNION_TEST));
printf("sizeof(int)=%d\n",sizeof(int));
printf("sizeof(long)=%d\n",sizeof(long));
printf("sizeof(double)=%d\n",sizeof(double));
printf("sizeof(float)=%d\n",sizeof(float));
printf("sizeof(short)=%d\n",sizeof(short));
printf("sizeof(char)=%d\n",sizeof(char));
system("pause");
return 0;
}
运行结果:
sizeof(UNION_TEST)=12
//这个,这个…… 这个是要对齐的,和max{所有单元}的那个看齐。 本例是4.
//所以总的长度需要能够被4整除,而且容得下所有变量。
sizeof(int)=4
sizeof(long)=4
sizeof(double)=8
sizeof(float)=4
sizeof(short)=2
sizeof(char)=1
第三个:
int main()
{
char c1='8',c2='2';
printf("%c,%c,%d,%d\n",c1,c2,c1-c2,c1+c2);
//运行结果:8,2,6,106
//ASCII码的相减和相加
char ch;
ch='a+b'; //b
ch='\0'; //回车,看不见的
ch='7'+'9'; //p
ch=5+9; //那个音乐符
//竟然都能通过!!
system("pause");
return 0;
}
第四个:
public class Test
{
public static void change(String str)
{
str+="jack";
}
public static void main(String [] args) throws Exception
{
String str="welcome";
change(str);
System.out.println(str);
}
}
运行结果:welcome
//这种传参方式,会有变量的一个拷贝,不会改变实参的值。
//如果是引用或指针的话,就改变值了。指针是将那个位置的内容重写了;
//引用是实参的一个别名,实际还是实参,换个名字罢了。
第五个:
class Player
{
int id=0;
static int num=0;
}
public class Test
{
public static void main(String [] args) throws Exception
{
Player p1=new Player();
Player p2=new Player();
p1.id=1000;
p2.id=2000;
p1.num+=p1.id;
p2.num+=p2.id;
System.out.println("Player.num=="+Player.num);
}
}
运行结果:Player.num==3000
//这个,这个,是实例变量和类变量。
//我的理解是:实例变量各自为王,自己改自己,和别人没关系,是独立的;
//类变量是全局的,一个实例改了变量,其他的也随着改变,有牵一发而动全身的意思。
菜鸟一个,真心期待高手指点!
通过代码看内部,一点点~
最新推荐文章于 2023-05-31 17:28:13 发布