【C语言】第一章 - 初识C语言 - 3

目录

关键字

extern

static

#define

指针

结构体


关键字

        关键字就是程序发明者规定的有特殊含义的单词,又叫保留字 。在声明变量,函数的时候不能以这些关键字作为变量名。C语言的32个关键字如下:

auto

break

case

char

const

continue

default

do

double

else

enum

extern

float

for

goto

if

int

long

register

return

short

signed

sizeof

static

struct

switch

typedef

union

unsigned

void

volatile

while

这里介绍一下:        extern   static   #define

extern

        修饰使用外部链接的全局变量,修饰使用外部链接的全局函数

 

        未使用的情况会有如图警报,但仍能用

static

  1. static修饰局部变量
    原代码及结果
    void test(){
        int a=0;
        a++;
        printf("%d",a);
    }
    int main(){
        for(int i=0;i<3;i++){
            test();
        }
    }

    修饰后
    void test(){
        static int a=0;
        a++;
        printf("%d",a);
    }
    int main(){
        for(int i=0;i<3;i++){
            test();
        }
    }

    static声明后,a将不会马上被销毁,只有第一次执行 int a=0 时进行初始化。
    代码运行结果将是

  2. static修饰全局变量。全局变量具有外部链接属性,但被static修饰后,将变成内部属性链接。
     
  3. static修饰函数,与上一条相同,外部链接变内部链接,其他c文件调用本c文件的函数将失败,只有同一个c文件自己能调用此函数。
    运行将会失败。

#define

        定义宏 可以定义变量,函数(带参数)

#define Max 999
int Max = 999;

#define MAX(x,y) (x>y?x:y) //宏一般全大写
对比函数
int MAX(int x,int y){
    return x>y?x:y;
}

        宏定义无需声明形参类型

        不过需注意的是,最好写成如下的形式,因为当x,y为一个式子时,如(1+2) 会直接进行文本替换同时因为操作符优先级而导致得不到理想的结果。

#define MAX(x,y) ((x)>(y)?(x):(y))

指针

        这里要引入一个重要的概念——内存,内存(Memory)是计算机的重要部件,CPU计算的数据都暂时放在内存中。为了不浪费内存,内存被分成一个一个单元格,每个单元大小为8位(bit),也就是一个字节(Byte)。每个单元都有自己的名称,也就是地址/指针。一个地址可以是

0000 0000 0000 0000 0000 0000 0000 0000 (共32位)二进制

32位平台下地址为32位,同理64位平台下地址就为64位。

        指针变量就是存放指针/地址的变量, 指针变量的大小取决于地址的大小,也就是只取决于用32位机还是64位机。32位平台下的地址是4个字节,64位平台下地址是8个字节。

        指针的声明与初始化

int value=233;
//用&符号获取变量地址
int *pointer =&value;//用pointer 存放了value 的地址

int *pointer2;
pointer2 =&value;

 如何通过地址取值呢,这里可以用前面学的 '*' 解引用符号,得到指针指向的值。

printf("%d",*pointer);

 改变 *pointer 也就改变了value 的值

int value=233;
int *pointer =&value;

*pointer =1;
printf("%d",value);

结构体

  1. 结构体的定义

    结构体就是用户可以自定义的一种数据类型,这个类型里面又有多种变量,里面的内容由自己决定。
    struct Student{
        char Sex[10];
        int ID;
        int Class;
    };
  2. 结构体的初始化及使用。
    #include <stdio.h>
    
    struct Student {
    	char name[10];
    	int ID;
    	int Class;
    };
    int main() {
    	struct Student s1 = { "小明",1234 };//初始化
        s1.Class=2;//对成员变量赋值
    	printf("%s %d %d", s1.name, s1.ID, s1.Class);
    }

    可以通过 '.' 来访问结构体内的成员变量;结构体的书写比起cpp学到的类较为繁琐,可以用关键字typedef的方法减少代码量

    #include <stdio.h>
    
    typedef struct Student {
    	char name[10];
    	int ID;
    	int Class;
    }Student;
    int main() {
    	Student s1 = { "小明",1234 , 2 };
    	printf("%s %d %d", s1.name, s1.ID, s1.Class);
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值