C语言学习笔记:关键字、指针

C语言学习笔记:关键字、指针,第1张

常见的关键字:

  1. c语言提供的,不能自己创建关键字
  2. 关键字不能做变量名(变量名不能和关键字冲突)
  3. auto是自动变量,每个局部变量都是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

int main()

{

    {

         int a = 10; //自动创建,自动销毁-自动变量

         //auto int a=10; 但auto省略了,故直接int

    }

}

signed 有符号的(有正负号的)

unsigned 无符号的

static 静态的:

1.修饰局部变量,改变了局部变量的生命周期(本质上是改变了变量的存储类型)

2.修饰全局变量,使得这个全局变量只能在自己所在的源文件(.c)内部可以使用,其他源文件不能使用。全局变量,在其他源文件内部可以被使用,是因为全局变量具有外部链接属性,但是被static修饰后就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量了。eg:例子1

3.修饰函数,使得函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用。本质上讲,static是将函数的外部链接属性变成了内部链接属性。(和static修饰全局变量一样)eg:例子2

typedef 类型定义

union 联合体、共用体

关键字:

typedef unsigned int u_int;

int main()

{

    unsigned int num = 100;

    u_int num2 = 100;

    return 0;

}

eg:static例子1:

void test()

{

    int a = 1;      //a是局部变量,出了局部范围就会销毁

    a++;            //static int a=1 加了static之后,修饰局部变量,改变了局部变量的生命周期(本质上是改变了变量的存储类型)

    printf("%d ", a);

}

int main()

{

    int i = 0;

    while (i < 10)

    {

         test();

         i++;

    }

    return 0;

}

eg:
static
例子2:

在相同文件中创建两个源文件01和02。分别写入以下代码:

int Add(int x, int y)
{
	return x + y;
}

extern int Add(int x, int y);
int main()
{
	int a = 10;
	int b = 20;
	int sum = Add(a, b);
	printf("sum=%d\n", sum);
	return 0;
}

第二个代码中的extern声明外部函数,而将extern改为static后,就会无法解析外部符号。

//c语言中,void是空的意思,代表函数类型是无返回类型,免用return语句

栈区:局部变量函数的参数

堆区:动态内存分配的

静态区:全局变量static修饰的静态变量

//define是一个预处理指令

  1. define定义符号,常量

#define MAX 1000

int main()

{

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

    return 0;

}

    2. define定义宏

#define Add(X,Y) ((X)+(Y))       //宏是有参数的

int main()

{

    printf("%d\n", 4 * Add(2, 3));

    return 0;

}

 

指针:

#include

int main()

{

    int a = 10;                  //a在内存中是要分配空间的--4个字节

    printf("%p\n", &a);    //%p是专门用来打印地址的

     int * pa=&a;         //pa是用来存放地址的,在c语言中pa叫指针变量

                                  //* 说明pa是指针变量; int说明pa执行的对象是int类型的

    return 0;

}

例子2:

int main()

{

    char ch='w';

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

    char * pc = &ch;

    return 0;

}

int main()

{

    int a = 10;

    int* pa = &a;

    *pa = 20;                  //*解引用 *** 作;*pa就是通过pa里边的地址,找到a,修改a

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

    return 0;

}

指针的大小是相同的,指针是用来取地址的,指针需要多大空间,取决于地址的存储需要多大空间

32位 32bit—4byte

64位 64bit—8byte

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1330695.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)

保存