C语言字符串指针变量与字符数组的区别

时间:2019-05-13 03:28:04下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言字符串指针变量与字符数组的区别》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言字符串指针变量与字符数组的区别》。

第一篇:C语言字符串指针变量与字符数组的区别

C语言字符串指针变量与字符数组的区别

用字符数组和字符指针变量都可实现字符串的存储和运算。但是两者是有区别的。在使用时应注意以下几个问题:

1)字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以作为串的结束。字符数组现金网96y.org是由于若干个数组元素组成的,它可用来存放整个字符串。

2)对字符串指针方式

char *ps=C Language;

可以写为:

char *ps;

ps=C Language;

而对数组方式:

static char st[]={C Language};

不能写为:

char st[20];

st={C Language};

而只能对字符数组的各元素逐个赋值。

从以上几点可以看出字符串指针变量与字符数组在使用时的区别,同时也可看出使用指针变量更加方便。

前面说过,当一个指针变量在未取得确定地址前使用是危险的,容易引起错误。但是博彩娱乐棋牌q07i5.org对指针变量直接赋值是可以的。因为C系统对指针变量赋值时要给以确定的地址。

因此,char *ps=C Langage;

或者

char *ps;

ps=C Language;

都是合法的。

第二篇:实验:字符数组与字符串

实验11:字符数组与字符串

一、实验目的1、理解字符数组和字符串的概念。

2、掌握字符数组的定义、初始、数组元素引用、输入输出。

3、掌握字符数组的处理

4、掌握常用字符串处理函数

二、实验内容

1、编制程序:对键盘输入的字符串进行逆序,逆序后的字符串仍然保留在原来字符数组中,最后输出。

(1)不得调用任何字符串处理函数,包括strlen;

(2)允许使用可用的字符串处理函数。

例如:输入hello world 输出dlrow olleh2、编写程序:对键盘输入的两个字符串进行连接。

(1)尽管我们知道strcat()可以简单完成此任务,仍然规定不得调用任何字符串处理函数,包括strlen;

(2)允许使用可用的字符串处理函数。

例如:输入helloworld,输出helloworld3、编写程序:对从键盘任意输入的字符串,将其中所有的大写字母改为小写字母,而所有小写字母改为大写字母,其它字符不变。

(1)不得调用任何字符串处理函数,包括strlen;

(2)允许使用可用的字符串处理函数。

例如:输入:Hello World!输出:hELLO wORLD!

三、实验小结

实验中碰到的问题,以及思考。

第三篇:C语言函数指针变量

C语言函数指针变量

在C语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以找到并调用这个函数。我们把这种指向函数的指针变量称为函数指针变量。

函数指针变量定义的一般形式为:

类型说明符(*指针变量名)();其中类型说明符表示现金网96y.org被指函数的返回值的类型。(* 指针变量名)表示*后面的变量是定义的指针变量。最后的空括号表示指针变量所指的是一个函数。例如:

int(*pf)();

表示pf是一个指向函数入口的指针变量,该函数的返回值(函数值)是整型。

本例用来说明用指针形式实现对函数调用的方法。

int max(int a,int b){

if(ab)return a;

else return b;

}

main(){

int max(int a,int b);

int(*pmax)();

int x,y,z;

pmax=max;

printf(input two numbers:n);

scanf(%d%d,x,y);

z=(*pmax)(x,y);

printf(maxmum=%d,z);

}

从上述程序可以看出用,函数指针变量形式调用函数的步骤如下:

先定义函数指针变量,如后一程序中第9行 int(*pmax)();定义 pmax为函数指针变量。

把被调函数的入口地址(函数名)赋予该函数指针变量,如程序中第11行 pmax=max;

用函数指针变量形式调用函数,如程序第14行 z=(*pmax)(x,y);

调用函数的一般形式为:(*指针变量名)(实参表)

使用函数指针变量还应注意以下两点:

函数指针变量不能进行算术运算,这是与数组指针变量不同的。数组指针变量加减一个整数可使指针移动指向后面或前面的数组元素,而博彩娱乐棋牌q07i5.org函数指针的移动是毫无意义的。

函数调用中(*指针变量名)的两边的括号不可少,其中的*不应该理解为求值运算,在此处它只是一种表示符号。

第四篇:c语言 二维数组与指针 教案

讲授

9.6二维数组和指针

2课时

掌握二维数组的地址表示方法 掌握指向数组元素的指针变量

掌握指向数组元素的指针变量

掌握用指向由m个元素组成的一维数组的指针变量

指向一维数组的指针变量

作业见后 一、二维数组的地址

例:定义二维数组int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};

则二维数组a是数组的数组,由3个一维数组所组成的,即3个元素:a[0],a[1],a[2]。而每个元素又是一个一维数组。

二、指向二维数组元素的指针变量

1、指向数组元素的指针变量

例1 用指向元素的指针变量输出二维数组元素的值 #include void main()

{ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int *p;

for(p=a[0];p

{if((p-a[0])%4==0)printf(″\n″);

printf(″%4d″,*p); }

}用指向由m个元素组成的一维数组的指针变量

例2 输出二维数组任一行任一列元素的值 #include void main(){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int(*p)[4],i,j;

p=a;

scanf(“i=%d,j=%d”,&i,&j);

printf(“a[%d,%d]=%d\n”,i,j,*(*(p+i)+j)); } 注意:

指向一维数组的指针变量的定义格式应写成:基类型(*p)[N] 上述语句int(*p)[4],代表p是一个指针变量,它指向包含4个整型元素的一维数组。*p两侧的小括号不可少,如果写成*p[4],由于[]运算级别高于*,*p[4]是指针数组。

p=a;表明p指向数组a中的第0行,此时p+1不是指向a[0][1],而是指向a[1],p的增值以一维数组的长度为单位,p+1地址就增加了8个字节。*(p+i)+j是a[i][j]的地址,这里的i是以一维数组的长度为单位,j则是以数组元素的长度为单位的。

复习

新授

讲授

复习默写

1、选择排序的基本思想

2、从键盘输入5个整数,使用选择法从小到大排序,编程实现。

一、二维数组的地址

例:定义二维数组int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};

则二维数组a是数组的数组,由3个一维数组所组成的,即3个元素:a[0],a[1],a[2]。而每个元素又是一个一维数组。设二维数组的首行的首地址为2000,则:

二、指向二维数组元素的指针变量

1、指向数组元素的指针变量

例1 用指向元素的指针变量输出二维数组元素的值

#include void main()

{ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int *p;

for(p=a[0];p

{if((p-a[0])%4==0)printf(″\n″);

printf(″%4d″,*p); }

注意:上例中如果对p赋值p=a[0];不能写成 p=a;因为此时a 是行指针,而p是列指针只能指向一个整型变量,a[0]是第0行的数组名,即第0行的首地址就是a[0][0]的地址。请学生思考上述赋值语句还可以写成什么? p=*a;p=&a[0][0];用指向由m个元素组成的一维数组的指针变量 例2 输出二维数组任一行任一列元素的值 #include void main(){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int(*p)[4],i,j;

p=a;

scanf(“i=%d,j=%d”,&i,&j); printf(“a[%d,%d]=%d\n”,i,j,*(*(p+i)+j)); }

注意:

指向一维数组的指针变量的定义格式应写成:基类型(*p)[N] 上述语句int(*p)[4],代表p是一个指针变量,它指向包含4个整型元素的一维数组。*p两侧的小括号不可少,如果写成*p[4],由于[]运算级别高于*,*p[4]是指针数组。

小结

作业

p=a;表明p指向数组a中的第0行,此时p+1不是指向a[0][1],而是指向a[1],p的增值以一维数组的长度为单位,p+1地址就增加了8个字节。*(p+i)+j是a[i][j]的地址,这里的i是以一维数组的长度为单位,j则是以数组元素的长度为单位的。

例3:

int(*t)[4],a[3][4]={{1,3,5,7}, {11,13,15,17},{21,23,25,27}};t = a;printf(“%d,%d”, **t, t[1][2]);t++;t++;printf(“%d”, **t);

运行结果:1,1521

【课堂小练习】

1、[2010.3.27]若有:int(*p)[3];则正确的是(D)A)定义了基类型为int的三个指针变量

B)p是基类型为int的具有三个元素的指针数组 C)定义了名为*p,具有三个元素的整型数组

D)定义了一个名为p的指针变量,它可以指向每行有三个整数元素的二维数组

2、输入:1 2 3<回车>,则输出结果是 int a[3][2]={0},(*p)[2],i,j;p=a;for(i=0;i<2;i++){ scanf(“%d”,p);p++;} for(i=0;i<3;i++)for(j=0;j<2;j++)printf(“%d”,a[i][j]);

1、二维数组的地址

2、指向数组元素的指针变量

3、指向一维数组的指针变量

1、整理课堂笔记

2、完成深入研究整型指针练习题

第五篇:C语言程序设计实验七:函数、数组、指针

C语言程序设计实验七:函数、数组、指针

1、程序运行后,用户任意输入一个字符串,求出字符串长度,然后输出字符串内容及个 数。不能使用strlen函数。

求字符串长度函数的函数原型必须如下:

int MyStrLenPt(char *str)

若输入:nihao123!

则输出:nihao123!:9 chars2、编写一个对一维数组进行排序的程序。

要求:

写两个函数,一个主函数,一个sort函数。在主函数中完成数组的输入和输出,通过调 用sort函数对数组进行排序。

sort函数的原型为:voidsort(int*p, intn);

说明:

(1)请大家按学号来坐,便于考勤和管理。

(2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ、上网或打游戏。

(3)直接把C语言代码粘贴到相应的实验题目下方,上交实验报告时只交word文档。

(4)文档名称:班级+学号后2位+姓名+实验编号,例如11电1班12张山实验七.doc。

下载C语言字符串指针变量与字符数组的区别word格式文档
下载C语言字符串指针变量与字符数组的区别.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C语言结构体指针变量作函数参数

    C语言结构体指针变量作函数参数 在ANSI C标准中允许用结构变量作函数参数进行整体传送。但是这种传送要将全部成员逐个传送,特别是成员为数组时将会使传送的时间和空间开销很......

    C语言指向结构体数组的指针(5篇模版)

    C语言指向结构体数组的指针 指针变量可以指向一个结构数组,这时结构指针变量的值是整个结构数组的首地址。结构指针变量也可指向结构数组的一个元素,这时结构指针变量的值是该......

    C语言数据结构与指针(大全5篇)

    数据结构【第四次】实验报告 学院:班级: 学号:姓名:实验四 (一)实验名称:C语言数据结构与指针 (二)实验目的:巩固复习前期所学C语言的函数参数传递、指针和结构体等知识点,加强学习数据......

    C语言程设计实验与案例周信东主编实验五 六 数组及字符处理

    实验4 数组及字符处理 学号:姓名: 实验日期:2018.11.11 一、 实验目的和要求 (1)掌握一维数组与二维数组的定义、初始化和数组元素的引用方法。 (2)学习数组作为函数参数的用法。......

    C语言结构体与指针实验(精选5篇)

    实验一 C语言结构体与指针 一、实验内容 1) 学生信息的显示,具体要求如下: 定义一个结构体描述学生信息(学号,姓名,性别,年龄,住址); 设计一个函数,用于显示单个学生信息,函数的参数......

    语言与言语的区别及关系

    语言与言语的区别及关系 王昕竹 宁夏大学新华学院文法外语系 09级英语二班 The Distinction and Relationship of Language and Speech WangXinZhu Grammar Department of F......

    C语言与Java的区别

    C语言与Java的区别 一、概览 1、从编程思想来看 C语言 为面向过程语言 Java 为面向对象语言 2、从对地址的可操作性上来看 C语言可以直接对硬件操作 Java 不能直接对硬件操......

    语言与言语之间有什么联系和区别

    答:语言是作为交际工具和思维工具的音义结合的符号系统。言语就是个人讲话(写作)的行为和结果。语言和言语的区别: ①语言系统是社会共有的交际工具,因而是稳固的,具有相对的静止......