[C语言]指针

关键字

简单介绍

关键字我们要注意两点,不能自己创建关键字,不能使用与关键字一样的变量名。
下面我们给出一些比较常见的关键字

常见关键字

auto自动的,每个局部变量都是auto修饰的,这个关键词常常是省略的
break在循环语句或switch语句中使用
case
char字符类型
const修饰变量以锁定变量,使其成为常变量
continue继续
default默认
do
double双精度浮点型
else
enum枚举
extern声明外部符号
float
for
goto
if
int
long
register寄存器关键字(建议存放寄存器)
计算机数据的存储有五种:网盘,硬盘,内存,高速缓存,寄存器
他们从左往右造价逐渐升高,随之速度越快,空间越小,我们使用寄存器关键字时就可以让大量频繁使用的数据存放在寄存器中,提高效率
return
short
signed有符号的
sizeof
static静态的
他有三种使用:修饰局部变量,修饰全局变量,修饰函数

viod text()
{
int i;
i++;
printf("%d\n",i)
}
int main()
{
   int a=0;
   while(a<10)
   {
    text();
    a++;
   }
   return 0;
}

如这串代码,最终他会输出10个2,如果用static来修饰int a,那么最终输出的就会是2~11,因为static 修饰局部变量时,改变了局部变量的生命周期,但是并不改变作用域。本质上则是改变了局部变量的存储类型,内存分为栈区,堆区和静态区,栈区存储局部变量和函数参数,堆区则是动态内存分配,静态区存储全局变量和static修饰的局部变量。
当他修饰全局变量时,就会将全局变量的外部链接属性改为内部链接属性,变得只能在本源文件内部起作用,修饰函数时与此大同小异。
struct结构体
switch
typedef类型定义,又或者是类型重定义。

unsigned int a=12

我们每次都要这样写会显得比较繁杂,我们这时就可以使用typedef对他进行重定义。

typedef unsigned int u_int;

将繁琐的代码简化为u_int这样的。
union联合(共用)体
unsigned
void无
volatile
while

#define 定义常量和宏

#define定义常量

这个我们之前已经说过,使用#define直接将某个名字定义为常数

#define hh 1234;
int main()
{

printf("%d\n",hh);

return 0;
}

最终打印出来的就是我们定义给hh的值1234.

定义宏

宏是什么?
宏是一种批量处理的称谓,计算机科学里的宏是一种抽象事物,它根据一系列预定义的规则以替换定义的文本模式,解释器或编译器在遇到宏时会自动进行这一系列模式转换。

#define Sum(x,y)  x+y
int main()
{

printf("%d\n",Sum(6,9));

return 0;
}

指针

要想了解指针必须先了解内存,内存是我们存储数据的空间,对应到我们的现实生活,他就像我们居住的小区这整个空间,我们就是被存储的数据,如果我们想要去拜访一个人,我们就需要知道他的具体地址,即单元,楼层,门牌号。这就相当于我们将整个小区分成 若干个小的空间,门牌号一类的东西就是我们给他们的编号,以方便我们去寻找我们想见的人。再回到内存,内存也是一个空间,又被分为一个一个 内存单元,而数据就被存储到这内存单元中,为了寻找到我们想要的数据,我们也需要给这些内存单元编号。
我们如何对他们进行编号?
计算机有32位机器和64位之分,拿32位举例,这32位就是32条地址线,是物理上的线,通电可以输出正电或是负电,规定正电为1,负电为0,这32根地址线所输出的所有0或1,就组成了长32位的二进制序列,可以知道,这些序列因0和1的排列,共有2的32次方种可能,这2的32次方种可能出现的序列,就是我们给这些内存单元的编号,此时这些编号就被称为该内存单元的地址,32位机器可以管控2的32次方个内存单元。
计算机中单位我们都知道,如果我们让一个内存单元为一个bit,进行一系列单位换算后,这一个内存的总空间为0.5G,有点小,所以经过各种什么事,最终一个内存单元为一个字节,此时32位机器的内存就是4G,64位则是8G,至于我们买的有16G内存的电脑,则是装了两个内存条。
在C语言中,打印地址我们使用%p,同时还要使用&,取地址操作符。

int a=10;

printf("%p\n", &a);

这样我们就打印出了a的地址,
在这里插入图片描述
我们既然取出了地址,就得有地方存放地址,就像我们得知他人地址时要拿本子记下一样,上面这个需要使用pa来存放地址,这个pa就叫做指针变量,同样的,得知了地址,我们肯定要用,直接使用是不行的,我们需要与指针变量对应的数据类型,即指针类型,我们用int*来表示指针类型,

int a=10;

printf("%p\n", &a);

int*pa=&a;

*pa=20

*说明pa是指针变量,int则是说明pa执行的类型是int类型的。
我们取出了a的地址,把他存放到pa中,然后再用pa中的地址去寻找a,再对他进行赋值,此时a的值就是20,pa就是寻找地址的步骤,这里的是解引用操作符。
因为指针是用来存放地址的,所以指针有多大取决于地址有多大。也就是一个地址多大,32位机器显然一个地址是4个字节,无论指针变量执行什么类型,大小都是4个字节,64位则都是8个字节。
这只是初识指针,其博大精深来日再论。

结构体

结构体使C语言可以描述复杂类型,可以创建新的类型出来。
创建类型需要struct即创建,

struct OB
{
char name[10];
int stage;
float T;
}
int main()
{
struct OB f={"王八"6421.3 }printf("%s %d %f\n", f.name,f.stage,f.T);

struct OB*ps=&f;

printf("%s %d %f\n", f->name,f->stage,f->T);

return0;

}

如上即为创建一个新的类型并将其内容打印出来,其中有两个操作符,
.和->
在建立的新的类型中我们所给的name之类的东西被称为成员变量,f是结构体变量,ps为结构体的指针变量
上面两个操作符的用法如下:
结构体变量名 . 成员变量名
结构体指针->成员变量名

=========================================================================================================
今天的笔记到此为止,希望可以给看到的初学者一些帮助,拜拜~

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒世伞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值