重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
目录
创新互联主要业务有网站营销策划、网站设计制作、成都网站设计、微信公众号开发、微信小程序开发、H5开发、程序开发等业务。一次合作终身朋友,是我们奉行的宗旨;我们不仅仅把客户当客户,还把客户视为我们的合作伙伴,在开展业务的过程中,公司还积累了丰富的行业经验、全网整合营销推广资源和合作伙伴关系资源,并逐渐建立起规范的客户服务和保障体系。前言
一、指针
1.内存
2.指针变量的大小
二、static关键字
三、常量和宏
四、typedef关键字
五、结构体
总结
在自己的学习过程中的总结,方便日后的复习。
内存是我们电脑中重要的存储器,我们程序的运行都在我们的内存中,我们的内存被分为一份一份的小的内存单元,一个一个的小单元为一个字节即1byte,然后为了方便管理内存中的每个单元,我们给每块内存进行了编号,就叫做这块内存的指针或地址。
int * 是一种指针变量 他和其他变量类似
&为取地址符,可以通过&来获取变量的地址
*为解引用符 ,可以*加上某一变量的地址来获取该变量进行一系列操作
指针也可以应用到其他类型的变量
如char float
当变量类型为char时,他的指针变量将定义为 char* ,char为指针所对应变量的类型,而后边的*代表这是一个指针。
#includeint main()
{
char ch = 'w';
char* pc = &ch;
*pc = 'q';
printf("%c\n", ch);
return 0;
}
2.指针变量的大小指针变量的大小取决于地址的大小,当我们在X86平台下时,我们的虚拟的地址空间为32为,即有32位的2进制数字,我们的一个字节(byte)为八个比特(bit),一个比特(bit)存储一个2进制数字0或1,故32位2进制数字将存储需要4个字节的大小。
而在我们的X64平台下,我们的虚拟地址空间为64位,同理可得,我们存储这个地址需要8个字节的空间。
#include//指针变量的大小取决于地址的大小
//32位平台下地址是32个bit位(即4个字节)
//64位平台下地址是64个bit位(即8个字节)
int main()
{
printf("%d\n", sizeof(char *));
printf("%d\n", sizeof(short *));
printf("%d\n", sizeof(int *));
printf("%d\n", sizeof(double *));
return 0;
}
二、static关键字三、常量和宏1.修饰局部变量时,该局部变量的生命周期变长,不会随着作用域结束而消失。
如:static int a = 0;
2.修饰全局变量时,该全局变量成为该模块的私有内容,在编译结束后,将由外部链接变为内部链接,在同一个工程中,其他文件并不能用extern关键词直接引用该全局变量。
如:static char = ‘a’;
3.修饰函数时,与全局变量相似,成为该文件的专属内容,有外部链接改为内部链接,也不能用extern声明。
如:static int Add(x,y);
四、typedef关键字1.#define MAX 100
这是对于常量的定义,我们要注意定义后不加分号
2.#define 定义宏
//define 定义宏 #define ADD(x, y) ((x)+(y)) #includeint main () { int sum = ADD ( 2 , 3 ); printf ( "sum = %d\n" , sum ); sum = 10 * ADD ( 2 , 3 ); printf ( "sum = %d\n" , sum ); return 0 ; } 定义宏和函数有些类似, #define ADD(x, y) ((x)+(y)),在此句中,我们可以在((x)+(y)) 将变量用括号括起来,避免产生歧义。
typedef unsigned int uint;
typedef顾名思义就是类型重定义,就是我们对数据类型名新起一个名字,将复杂的名字化简。
//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名
typedef unsigned int uint_32;
int main()
{
//观察num1和num2,这两个变量的类型是一样的
unsigned int num1 = 0;
uint_32 num2 = 0;
return 0;
}
五、结构体当我们在使用数据时,会考虑到他们的数据类型,如:int float double char short long long long ,这些都是我们的内置数据类型,但是我们在生活中不可能只用到这些数据类型,我们在定义一个学生类型时,应该考虑到学生的姓名学号性别成绩等内容,这时,我们可以定义一个结构体变量,将这些内容进行定义。
struct Stu
{
char name[20];//名字
int age; //年龄
char sex[5]; //性别
char id[15]; //学号
};
//打印结构体信息
struct Stu s = {"张三", 20, "男", "20180101"};
//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps-
>id);
总结在这段代码中,使用 struct关键字来对结构体进行操作,在初始化结构体内容时,切记对char类型数组输入时不加&符号,而需要输出结构体内容时,需要用到“.”和“->”结构体成员操作符,“.”操作符用于直接,如s1.age,而“->”用于 使用指针操作时,如ps->age。
这就是今天的学习内容,常总结多学习。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧