美文网首页
嵌入式day08

嵌入式day08

作者: 小土豆dy | 来源:发表于2019-08-01 16:21 被阅读0次

指针数组

所谓指针数组是指

由若干个具有相同存储类型和数据类型的指针变量构成集合

形式:<存储类型> <数据类型> *<指针数组名>[大小]

指针数组名表示该数组指针数组的起始地址

多级指针

多级指针的定义:

把一个指向指针变量的指针变量,称为多级指针变量

对于指向处理数据的指针变量称为一级指针变量,简称一级指针,而把指向一级指针变量的指针变量称为二级指针变量,简称二级指针

二级指针变量的说明形式如下

<存储类型> <数据类型> **<指针名>;

多级指针的运算

指针变量加1,是向地址大的方向移动一个目标数据。多级指针运算也是以其目标变量为单位进行偏移。

#include<stdio.h>
int main(int argc, char *argv[])
{
 int a[] = {3, 6, 9};
 int *p[2] = {&a[0], &a[1]};
 int **q;
 q = p;
 printf("%d %d\n", a[0], a[1]);
 printf("%d %d\n", *p[0], *p[1]);
 printf("%d %d %d\n", a[0], *p[0], **q);
 printf("%d %d %d\n", a[1], *p[1], **(q+1));
​
 return 0;
}

结果:

void 指针

void指针是一种不确定数据类型的指针变量,它可以通过强制类型转换让该变量指向任何数据类型的变量

一般形式:void *<指针变量名称>;

对于void指针,在没有强制类型转换之前,不能进行任何指针的算术运算

const变量

一般形式:const <数据类型> 变量名 = [<表达式>];

常量化变量是为了使得变量的值不能修改

变量有const修饰时,若想用指针间接访问变量,指针也要有const修饰。

常量化指针目标是限制通过指针改变其目标的数值,但<指针变量>存储的地址值可以修改

const修饰指针

形式:const <数据类型> *<指针变量名称>[= <指针运算表达式>]

函数的基本用法

函数是一个完成特定功能的代码模块,其程序代码独立,通常要求有返回值,也可以是空值。

一般形式:

<数据类型> <函数名称>(<形式参数说明>)
{
 语句序列;
 return[(<表达式>)];
}

<数据类型>是整个函数的返回值类型。return[(<表达式>)]语句中表达式的值,要和函数的<数据类型>保持一致。如无返回值应该写为void型

<形式参数说明>是逗号","分隔的多个变量的说明形式

大括号对{<语句序列>},称为函数体;<语句序列>是大于等于零个语句构成的

函数的说明就是指函数原型,其中<形式参数说明>可以缺省说明的变量名称,但类型不能缺省

函数的使用也叫函数的调用,形式:

函数名称(<实际参数>),实参就是在使用函数时,调用函数传递给被调用函数的数据。需要确切的数据

函数调用可以作为一个运算量出现在表达式中,也可以单独形成一个语句。对于无返回值的函数来讲,只能形成一个函数调用语句。

练习定义求x的n次方值的函数?

源码:

#include<stdio.h>
float Caculate(int n, float x)
{
 float s=1;
 int i=0;
 while(i < n){
 s *=x;
 i++;
 }
 return s;
}
int main(void)
{
 int a;
 float b, s;
 scanf("%f", &b);
 scanf("%d", &a);
 s = Caculate(a,b);
 printf("%f\n", s);
 return 0;
}         

C语言控制语句

函数的参数传递

函数之间的参数传递方式:

  • 全局变量

  • 复制传递方式

  • 地址传递方式

全局变量

全局变量就是在函数体外说明的变量,在程序中的每个函数里都是可见的

全局变量一经定以后就会在程序的任何地方可见。函数调用的位置不同,程序的执行结果可能会受到影响。不建议使用。

复制传递方式

调用函数将实参传递给被调用函数,被调用函数将创建同类型的形参并用实参初始化

形参是新开辟的存储空间,因此,在函数中改变形参的值,不会影响到实参

地址传递方式

按地址传递,实参为变量的地址,而形参为同类型的指针

被调用函数中对形参的操作,将直接改变实参的值(被调用函数对指针的目标操作,相当于对实参本身的操作)

编写一个函数,统计字符串中小写字母的个数,并把字符串中的小写字母转化成大写字母

#include<stdio.h>
int str_fun(char *p);
int main(int argc, char argv[])
{
 char s[] = "ghjkkh3459hj";
 int n;
 n = str_fun(s);
 printf("%d %s\n", n, s);
 return 0;
}
int str_fun(char *p)
{
 int c = 0;
 while(*p){
 if(*p <= 'z' && *p >= 'a'){
 c++;
 *p -= 32;
 }
 p++;
 }
 return c;
}

相关文章

网友评论

      本文标题:嵌入式day08

      本文链接:https://www.haomeiwen.com/subject/knhcdctx.html