首页 > 其他分享 >C语言常见关键字+指针

C语言常见关键字+指针

时间:2022-10-01 21:37:05浏览次数:49  
标签:main return 变量 int C语言 关键字 printf include 指针

c语言的常见关键字有:

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

下面对个别关键字进行介绍

auto(自动)

#include <stdio.h>
int main()
{
int a = 10;//局部变量都是自动变量 - 前面都省略一个auto --> auto int a = 10
return 0;
}

局部变量和全局变量:

定义在代码块({})内部的变量叫局部变量,定义在代码块({})外部的变量叫全局变量

代码块用{}表示,局部变量和全局变量的名字建议不要相同,容易产生bug,当名字相同时局部变量优先

#include <stdio.h>


int num2 = 20;//全局变量
int main()
int num1 = 10;//局部变量
return 0;
}

register(寄存器关键字)&unsigned(无符号型)

C语言常见关键字+指针_#include

速度:寄存器>高速缓存>内存>硬盘

大小:硬盘>内存>高速缓存>寄存器

计算机存储数据原理:硬盘数据-->内存-->高速缓存-->寄存器-->cpu

#include <stdio.h>
int main()
{
//register int a = 10;//建议把a定义成寄存器变量,计算机会优先储存这个数据
int a = 10;
a = -2;
//int 定义的变量是有符号的
//signed int == int
unsigned int num = 0;//unsigned无符号型
return 0;
}

typeof - 类型定义 - 类型重定义

```c++
#include <stdio.h>
int main()
{
//typedef - 类型重定义
typedef unsigned int u_int;//重新定一个unsigned int型变量
unsigned int num = 20;
u_int num = 20;
return 0;
}

static -- 用于修饰变量

static修饰就不变量,局部变量生命周期变长(出了作用域不会被销毁)

#include <stdio.h>
void test()
{
//int a = 1;//创建一个局部变量
static int a = 1;//a是一个静态的局部变量
a++;
//printf("a = %d\n",a);//2 2 2 2 2
printf("a = %d\n",a);//2 3 4 5 6
}
int main()
{
int i = 0;
while (i<5)
{
test();
i++;
}
return 0;
}

static修饰全局变量,改变了变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用,出了源文件便无法使用

创建一个源文件,创建一个全局变量

//这是一个test1.c的源文件
static int g_val = 2022;//全局变量

回到源文件中编代码

#include <stdio.h>
int main()
{
//extern - 声明外部符号的关键字
extern int g_val;//报错,一个无法解析的外部命令
printf("g_val = %d\n",g_val);
return 0;
}

如果将test1.c中的static去掉则会输出2022

static 修饰函数改变了函数的连接属性 正常的一个函数是具有外部链接属性,被static修饰时就变成内部连接属性了

static int Add(int x , int y) (定义一个函数)

{

int z = x+y;

return z;

}

#include <stdio.h>
//声明外部函数
extern int Add(int , int);
int main()
{
int a = 10;
int b = 20;
int sum = Add(a,b);
printf("sum = %d\n",sum);//报错
return 0;
}

#define(默认)

1.定义标识符常量

2.定义宏

#include <stdio,h>

//#define 定义标识符常量
//#define MAX 100;

//#define 可以定义宏 - 带参数
//函数的实现
int Max(int x , int y)
{
if(x > y)
return x;
else
return y;
}
//宏的定义方式
#define MAX(X,Y) (X>Y ?X:Y)
int main()
{
//int a = MAX;

int a = 10;
int b = 20;
//函数
int max = Max(a,b);
printf("max = %d\n",max);
//宏的方式
max = MAX(a,b);
//max =(a>b?a:b)
printf("max = %d\n",max);
return 0;
}

struck - 结构体操作符

#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)//跳过这个报错
//创建一个结构体类型
struct Book
{
char name[20];//C语言程序设计
short price;//50
};

int main()
{
//利用结构体类型创建一个该类型的结构体变量
struct Book b1 = {"c语言程序设计",50};
struct Book* pb = &b1;
//利用(指针变量)pb打印书名和价格

// . 结构体变量.成员
// -> 结构体指针->成员
//printf("%s\n", pb->name);
//printf("%d\n", pb->price);
/*printf("%s\n", (*pb).name);
printf("%d\n", (*pb).price);*/


//printf("书名:%s\n", b1.name);
//printf("价格:%d\n", b1.price);
//b1.price = 15;

//修改name值(因为是数组类型不能直接进行修改)
strcpy(b1.name, "C++");//strcpy - string copy - 字符串拷贝-库函数-需要引用string.h头文件
printf("%s\n", b1.name);
//printf("修改后的价格:%d\n", b1.price);*/
return 0;
}

指针

指针的大小在32位的平台上是4个字节,在64位的平台上是8个字节

(这里涉及到计算机储存的相关知识,我理解的不是很深)

#include <stdio.h>
int main()
{
int a = 10;
//& - 取地址操作符 在之前的“字符串+转义字符+注释”那一节有说到
int* p = &a;//取出a的地址(放在p中) 创建一个指针变量p(int* )
printf("%p\n",p);
*p = 20;//* - 解引用操作符 *p指a的地址
printf("a = %p\n",a);//20
//有一种变量是用来存放地址的 - 指针变量
//printf("%p\n", &a);//打印a的地址(16进制)
return 0;
}

C语言常见关键字+指针_#include_02

#include <stdio.h>
int main()
{
char ch = 'w';//定义一个ch变量
char* pc = &ch;//取出ch的地址放在pc中
printf("%d\n",sizeof (pc));//打印pc所占空间大小(指针变量的大小)
*pc = 'a';//利用pc访问ch的地址更改ch的内容
printf("%c\n",ch);//a
return 0;
}









标签:main,return,变量,int,C语言,关键字,printf,include,指针
From: https://blog.51cto.com/u_15812262/5728442

相关文章

  • C语言每日一题——第五天
    第五天今天小明觉得自己又可以了!于是他决定继续实现游戏开发,这次从玩家行为控制入手。在长度无限、宽度为9的地图场景中,我们可以控制角色向左右移动,移动后会留下轨迹,该轨......
  • 测试用例框架——C语言
    测试用例框架——C语言目录测试用例框架——C语言1宏定义2初始化函数3测试的结果函数4状态测试函数5字符串的比较函数6值比较函数1宏定义staticintTestNum=......
  • 这次是大学生辣(C语言版)
    【题目描述】某日,国家安全局获得一份珍贵的材料,上面记载了一个即将进行的恐怖活动的信息。不过,国家安全局没法获知具体的时间,因为材料上的时间使用的是LINUX的时间戳,即是......
  • 【C语言练习_4】输入字符串,将所有字母转换成大写字母输出,如果不是字母,结束进程
    1.题目输入字符串,将所有字母转换成大写字母输出,如果不是字母,结束进程2.代码#include<stdio.h>#include<string.h>inttest(char*input,char*output){inti=0,z=0,l=0......
  • 如何区分指针常量和常量指针
    一、概念常量指针:常量指针本质是指针,常量修饰它,表示这个指针是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改在C/C++中,常量指针是像这样声明的:1......
  • 【C语言初级】使用函数求闰年
    想求闰年,首先得了解闰年的规则:普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如19......
  • 【C语言】给定两个数,求这两个数的最大公约数
    ​​intmain()​​​​{​​​​​intnum1=0;​​​​ intnum2=0;​​​​ inta=0;​​​​ scanf("%d%d",&num1,&num2);​​​​ while(a=num1%num2......
  • C语言中的循环语句要点
    C语言中循环语句主要有三种:while;for;dowhile。1.while循环​​//while语法结构​​​​while(表达式)​​​​{​​​​循环语句;​​​​}​​1.1while语句中的break......
  • 初学C语言笔记221001
    int(*p)[5]  此时数组指针p约等于一个含有5个int型元素数组的数组名*p就是数组int[5]的第一个元素的地址p+1就是跳过int[5]数组的下一个同int[5]类型的数组名*(p+1)再解......
  • C语言第20天,typedef关键词和条件编译
    1.给整型类型取别名原因:我们在整型数据类型中讨论过的,C语言标准并未规定这些数据类型的大小范围,具体的实现交由了编译器和平台决定。也就是说,int在VisualStudio2019中......