C语言 您所在的位置:网站首页 c语言中定义已有数据类型的别名使用的关键字是 C语言

C语言

2024-07-11 07:42| 来源: 网络整理| 查看: 265

目录

数组中数据的初始化

数组中元素的访问

函数参数的传递

关键字:typedef&#define

typedef  类型定义

#define  宏定义

 typedef 和 #define的区别

static 静态修饰

static修饰局部变量

static修饰全局变量

static修饰函数

数组:一组相同类型数据的集合。

例如: int  arr[n];其中n必须是常量,但有一种情况例外——宏定义,如下所示。

#define MY_NUM 10 int arr[MY_NUM]; 数组中数据的初始化

int arr[10]={1,2,3,4,5,6,7,8,9,10};数组中的元素用花括号括起来,以逗号间隔每个数据,花括号外以分号结束。

int arr[1000]={1};数组中的第0个元素是1,其余元素均以0填充。

int arr[100]={0};将数组中的元素全部初始化为0。

数组中元素的访问

数组中的元素是通过下标来访问,数组的遍历只能通过循环逐个访问,不能整体访问。

#include #include #define MY_NUM 10 int main() { int arr[MY_NUM]; int i = 0; for (i = 0; i < 10; i++) { arr[i] = i + 1; printf("数组的第%d个元素是%d\n", i, arr[i]); } system("pause"); return 0; }

注意:数组的元素访问是从0下标开始的,10个元素的下标依次为0-9。如果访问了arr[10],则为越界访问,访问到了不属于arr数组的空间会导致程序运行崩溃。

函数参数的传递 #include #include //int arr[]说明要传递进来的是个数组 void init_arr(int arr[], int sz)//该函数用于对数组的元素进行初始化 { int i = 0; for (i = 0; i < 10; i++) { arr[i] = i + 1; } } int main() { int arr[10]; int i; init_arr(arr,sizeof(arr)/sizeof(arr[0]));//调用函数 for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) { printf("数组的第%d个元素是%d\n", i, arr[i]); } system("pause"); return 0; }

sizeof(arr)求数组所占的空间大小,sizeof(arr[0])求数组首元素所占的空间大小。

sizeof(arr)/sizeof(arr[0])即数组的元素个数。

关键字:typedef&#define typedef  类型定义

typedef unsigned int uint  使用unsigned int定义了一个新的类型 uint

uint a;  等价于 unsigned int a;

#define  宏定义

作用:进行替换。宏定义后面不能有分号,否则分号也是宏定义的一部分。

#include #include #define MAX(a,b) (a>b)?(a):(b) int main() { int ret = MAX(10, 20); printf("%d\n",ret); system("pause"); return 0; }

“宏函数”针对一些魔幻数字,使用宏赋予数字一些含义,提高代码的可读性,宏函数并不是真正的函数,因此没有函数的调用消耗。

 typedef 和 #define的区别

#define只是一种替换,而 typedef是定义一个类型。

#define INT int*

INT a,b;    等价于  int* a;int b;

typedef int* PINT

PINT a,b;  等价于  int* a;int*b;

static 静态修饰 static修饰局部变量

改变了局部变量的生命周期,使局部变量的生命周期随程序的结束被释放。

#include #include int return_num() { int n = 10; n += 10; return n; } int main() { int i; for (i = 0; i < 5; i++) { int ret=return_num();//每次调用函数后a重新赋值为10 printf("%d\n",ret); } system("pause"); return 0; }

运行结果:20 20 20 20 20

#include #include int return_num() { //用static修饰局部变量后,局部变量的作用域为整个程序,因此不会在下一次调用时被释放 static int n = 10; n += 10; return n; } int main() { int i; for (i = 0; i < 5; i++) { int ret=return_num(); printf("%d\n",ret); } system("pause"); return 0; }

运行结果:20 30 40 50 60

改变了生命周期后,变量只会被初始化一次(只需要开辟一次空间), 随着作用域的结束空间不会被释放。

static修饰全局变量

修改变量的访问属性(作用域)。

让这个全局变量仅在自己的作用域内生效,并且根据就近原则,所属文件内访问重名的时候优先访问自己文件内的。

因此:如果想要一个变量仅在所属.c文件内被使用,尽量使用static修饰;

           如果要在整个工程内使用这个变量,就不要使用static修饰。

static修饰函数

作用与修饰全局变量差不多(修改函数的访问属性,避免与外部其它函数命名冲突)

只要是同一个作用域,就不能使用同名的变量或者函数,无论是否使用static修饰。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有