------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
// 结构体的作用域
变量的作用域
1> 全局变量 (从定义位置开始到文件结尾)
2> 局部变量 (从定义的位置开始,到他所在的代码块或者函数结束括号的'}',)
结构体的作用域
结构体的作用域和变量一样:分为全局结构体,局部结构体
*/
#include <stdio.h>
//全局的结构体
struct Person{
int age;
char *name;//指针变量名是变量,可以改变指向
int idCard;
};//不要忘记此处的分号
void test(){
//定义一个结构体变量
struct Person p1;
p1.name ="张闪粉";
p1.age = 18;
p1.idCard = 438;
printf("%s,%d,%d\n",p1.name,p1.age,p1.idCard);
}
int main(int argc, const char * argv[]) {
// insert code here...
struct Person p1;
p1.name="张二";
p1.age = 12;
p1.idCard=20;
printf("%s,%d.%d\n",p1.name,p1.age,p1.idCard);
test();
{
//定义一个局部结构体
//局部结构体把全局结构体给暂时屏蔽了
struct Person{
int age;
};
}
//定义一个结构体变量
struct Person p2;
p2.age = 18;
printf("Hello, World!\n");
return 0;
}
// 结构体变量占用空间大小
//
// Created by 李佳乐 on 15-3-20.
// Copyright (c) 2015年 李佳乐. All rights reserved.
//
#include <stdio.h>
void test(){
struct A{
char ch; //1
short num; //2
int a; //4
int b; //4
}a1;
struct B{
char name[7];
char str[4];
int a;
}b1;
//计算结构体如果非配内存占用多少字节
int len = sizeof(b1);
printf("ch = %p\n",&a1.ch);
printf("num = %p\n",&a1.num);
printf("len = %d\n",len);
}
//结构体对齐:
//对齐的模数:默认结构体中基本数据类型中占用存储空间最大的那个
int main(int argc, const char * argv[]) {
#pragma pack(4)
// 手动的指定对齐模数
struct A{
short n[2];
char c[2];
}a1;
test();
int len = sizeof(a1);
printf("len = %d\n",len);
return 0;
}