#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
char s[] = "123456";
char d[] = "123";
printf("%d %d\n",s,d);
for(int i=0;i<sizeof(d); i++)
printf("%d\n",&d[i]);
printf("\n");
for(int j=0;j<sizeof(s); j++)
printf("%d\n",&s[j]);
printf("\n");
strcpy(d,s);
printf("%s\n",s);
printf("%s\n",d);
}
#include <stdio.h>
int g1=0,g2=0,g3=0;
void main ()
{
static int s1=0, s2=0, s3=0;
int v1=0, v2=0, v3=0;
printf("0x%08x\n", &v1);
printf("0x%08x\n", &v2);
printf("0x%08x\n", &v3);
printf("0x%08x\n", &s1);
printf("0x%08x\n", &s2);
printf("0x%08x\n", &s3);
printf("0x%08x\n", &g1);
printf("0x%08x\n", &g2);
printf("0x%08x\n", &g3);
}
局部变量在栈中,从高地址分配到低地址。全局和静态变量在静态区,从低地址分配到高地址
#include <stdio.h>
typedef struct Stu{
int num;
char ch[5];
}Stu;
void main ()
{
int v1=0, v2=0, v3=0;
Stu s1={1,"lly"};
Stu s2={2,"Jack"};
printf("0x%08x\n", &v1);
printf("0x%08x\n", &v2);
printf("0x%08x\n\n", &v3);
printf("%d\n", sizeof(Stu));
printf("0x%08x\n", &s1);
printf("0x%08x\n\n", &s2);
printf("0x%08x\n", &s1.num);
printf("0x%08x\n", s1.ch);
printf("0x%08x\n", &s2.num);
printf("0x%08x\n", s2.ch);
}
局部变量从高地址开始分配;结构体定义后将sizeof(Stu)大小的地址分配过去,结构体变量内部的变量从被分配地址的低地址开始分配,结构体变量的地址的最低地址。