的射频和无线供应商和资源

一站的射频和无线的需要

C编程语言Tutorial-Page3

参考以下页面导航完成C教程。
C语言page1
所以page2 C语言
C语言page3
C语言page4
C语言page5

指针

我们在前一节中研究了不同的数据类型。让我们考虑一个例子这些变量存储在不同的内存位置。在编程中,我们需要知道的地址位置这些变量存储。这些变量的地址是由运行时决定。

考虑这样一个场景,这些地址本身存储在不同的内存位置。如果我们将一个实体与这些内存位置“X”和“Y”存储,这些实体将称为指针。指针变量存储其他变量的地址。

引用操作符

在C语言中,检索一个变量的地址,我们使用引用操作符“&”(&)。由前面的变量的标识符和一个&符号,我们可以获得变量的地址。
integerPointer = &someNum;
charPointer = &someChar;
在这个例子中,不同的指针的值
integerPointer = 1000和charPointer = 1004

&操作符分配的地址“someNum”“integerPointer”和“integerPointer”是指“someNum”说。

注意:尽管“someChar”是一个字符变量,它的地址是一个整数。因此,“charPointer”的值是一个整数即1004。

间接/解引用操作符

指针声明如下面的代码段所示。

int * integerPointer;
char * charPointer;

如果我们希望访问的内容指出的位置指针变量,我们将不得不使用解引用操作符,一元阿斯泰里克斯“*”

int newNum;
newNum = * integerPointer;

总结
——“&”是引用操作符,可以解读为“地址”
——“*”是解引用操作符,可以解读为“价值指出“
——定义为类型*名称的指针

指针的概念

一个例子说明下面不同的指针的概念。

int var1 = 5, var2 arr [10];
int * intPtr;

intPtr = var1;/ * intPtr现在指向var1 * /
var2 = * intPtr;/ * var2现在是5 * /
* intPtr = 20;现年20岁的/ * var1 var2 = ? ?* /
intPtr = arr [0];/ * intPtr现在指向arr [0] * /

指针和函数

{
int var1 = 5, var2 = 6;
交换(var1 &var2);
/ * var1和var2的价值是什么?* /
}

无效的交换(int * inp1, int * inp2)
{
int温度;
temp = * inp1;
* inp1 = * inp2;
* inp2 = temp;
}
在这个例子中,函数指针参数启用访问和更改对象的函数,调用它

在最后一节中,我们观察到指针变量。
也可以创建指针的指针。
添加一个阿斯泰里克斯*每水平的参考。

int var1 = 100, * ptr1, * * pptr1;
ptr1 = var1;
pptr1 = &ptr1;

空指针

空白表示没有特定类型的一个变量。因此,规模和非关联化属性是欠定的。void指针指出的数据不能直接引用。“空白”是特殊的指针的指针。“空白”指针被广泛用来传递数据的任何数据类型从“来电”功能,“叫”功能。调用的函数类型指针和引用相同的。

例子:

{unsigned char var1 = 5, var2 = 6;
int iVar1 = 255, iVar2 = 312;
/ /交换角色变量值
交换((void *) (var1), (void *) (&var2));
/ /交换整数值
交换((void *) (&iVar1), (void *) (&iVar2));
}

无效的交换(void * inp1, void * inp2)
{
int * ptr1 = (int *) (inp1);
int * ptr2 = (int *) (inp2);
int温度;

temp = * ptr1;
* ptr1 = * ptr2;
* ptr2 = temp;
}

函数指针

•在C语言中,函数本身不是一个变量。•但是,可以定义指向函数的指针,可以分配,传递给函数,从函数返回,……
•一个指向函数的声明看起来像
int(*计算)(void *, void *);•这个声明定义了“计算”是一个指向函数的指针需要2 void指针作为输入,并返回一个整数•“计算”是一个指向函数的指针,*计算实际的函数。这里的括号是极其重要的。•下面的代码都有不同的意义int *计算(void *, void *);•这个声明定义了“计算”是一个函数需要2空指针作为输入,并返回一个整数的指针

函数指针使用非常广泛的不同类型的实现,特别是状态机实现,有条件的开关等。

列表和数组

列表和数组的区别在C语言是总结如下。
•列表:
•它是异构的元素的集合
•列表的大小可以是随机的,是在运行时确定的
•内存列表可能是随机的
•例子:购物清单,文档列表,等等
•数组:
•它是均匀的集合的元素
•通常,数组的大小是确定的
•连续内存数组连续即元素存储在连续顺序在内存中
•例子:数组是为所有学生的话题

数组

数组定义的是一组同质元素和最终的尺寸。
int aData [20];
这定义了“aData”20个元素的整数数组长度。

可以使用数组的名字作为一个指针

int * ptr1;
ptr1 = &aData [0];

变量的值“ptr1”和数组的名字“aData”会完全一样。

动态内存分配

在我们之前的例子和插图,数组的大小是固定的常量可以分配一个存储空间来存储通过指针数组使用动态内存分配方案“malloc分配请求的内存空间在堆和返回一个void *指针,铸造和存储到变量的指针

int * ptr1;/ *指针指向一个整数数组* /

/ *分配空间来存储10个整数/ 10的整数数组* / ptr1 = (int *) malloc (10 * sizeof (int));

calloc()函数分配一块内存,清理所有零可能只在某些情况下是有用的。malloc函数没有明确分配的内存为零和垃圾数据的谎言。这是malloc和calloc之间的区别。malloc也只需要一个参数,大小的内存分配使用。虽然calloc下面有两个参数如上所述。一个分配多少数据存储和数据类型大小。
calloc (n, sizeof(对象))


分享这个页面

翻译这个页面
Baidu