百科狗-知识改变命运!
--

指针与指针变量的概念是什么?

百变鹏仔1年前 (2023-12-15)阅读数 6#综合百科
文章标签指针变量

1、指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分。指针也就是内存地址,指针变量是用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。

有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。?

2、指针变量是指存放地址的变量。因地址的改变而做出指定性质的衡量变法。

扩展资料:

指针变量定义:

1、定义指针变量的一般形式如下:

类型名*指针变量名1,*指针变量名2,... *指针变量名n ;

2、空指针

空指针是一个特殊的指针,它的值是0,C语言中用符号常量NULL(在stdio.h中定义)表示这个空值,并保证这个值不会是任何变量的地址。空指针对任何指针类型赋值都是合法的。一个指针变量具有空指针值表示当前它没有指向任何有意义的东西。

3、void指针

(void *)类型的指针叫通用指针,可以指向任何的变量,C语言允许直接把任何变量的地址作为指针赋给通用指针。

但是需要注意void*不能指向由const修饰的变量,例如const int test; void * ptv; ptv = &test;第三句是非法的,只有将ptv声明为const void * ptv;,上述第三句ptv = &test才是合法的。

当需要使用通用指针所指的数据参加运算时,需要写出类型强制转换。如通用指针ptv 所指空间的数据是整型数据,p是整型指针,用此式转换:p=(int *)ptv;

百度百科-指针变量

百度百科-指针

字符数组名与字符串指针变量名的区别2009-01-19 19:08授课内容:

一、字符串指针变量的说明和使用

字符串指针变量的定义说明与指向字符变量的指针变量说明是相同的。只能按对指针变量的赋值不同来区别。

对指向字符变量的指针变量应赋予该字符变量的地址。如: char c,*p=&c;表示p是一个指向字符变量c的指针变量。而: char *s="C Language";则表示s是一个指向字符串的指针变量。把字符串的首地址赋予s。

请看下面一例。main(){

char *ps;

ps="C Language";

printf("%s",ps);

}

运行结果为:

C Language

上例中,首先定义ps是一个字符指针变量, 然后把字符串的首

地址赋予ps(应写出整个字符串,以便编译系统把该串装入连续的一

块内存单元),并把首地址送入ps。程序中的: char *ps;

ps="C Language";等效于: char *ps="C Language";

输出字符串中n个字符后的所有字符。

二、字符指针变量的运算

main(){

char *ps="this is a book";

int n=10;

ps=ps+n;

printf("%s\n",ps);

}

运行结果为:

book

在程序中对ps初始化时,即把字符串首地址赋予ps,当ps= ps

+10之后,ps指向字符“b”,因此输出为"book"。

main(){

char st[20],*ps;

int i;

printf("input a string:\n");

ps=st;

scanf("%s",ps);

for(i=0;ps[i]!='\0';i++)

if(ps[i]=='k'){

printf("there is a 'k' in the string\n");

break;

}

if(ps[i]=='\0') printf("There is no 'k' in the string\n");

}

本例是在输入的字符串中查找有无‘k’字符。

三、字符串指针作为函数参数的使用。

要求把一个 字符串的内容复制到另一个字符串中,并且不能使用strcpy函数。函

数cprstr的形参为两个字符指针变量。pss指向源字符串,pds指向目标字符串。表达式: (*pds=*pss)!=`\0'

cpystr(char *pss,char *pds){

while((*pds=*pss)!='\0'){

pds++;

pss++; }

}

main(){

char *pa="CHINA",b[10],*pb;

pb=b;

cpystr(pa,pb);

printf("string a=%s\nstring b=%s\n",pa,pb);

}

指针与指针变量的概念是什么?

在上例中,程序完成了两项工作:一是把pss指向的源字符复制

到pds所指向的目标字符中,二是判断所复制的字符是否为`\0',若

是则表明源字符串结束,不再循环。否则,pds和pss都加1,指向下

一字符。

四、使用字符串指针变量与字符数组的区别

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

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

2. 对字符数组作初始化赋值,必须采用外部类型或静态类型,如: static char st[]={“C Language”};而对字符串指针变量则无此限制,如: char *ps="C Language";

3. 对字符串指针方式 char *ps="C Language";可以写为: char *ps;

ps="C Language"; 而对数组方式: static char st[]={"C Language"};不能写为: char st[20]; st={"C Language"};而只能对字符数组的各元素逐个赋值。

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

前面说过,当一个指针变量在未取得确定地址前使用是危险的,容易引起错误。但是对指针变量直接赋值是可以的。因为C系统对指针变量赋值时要给以确定的地址。因此, char *ps="C Langage";或者 char *ps; ps="C Language";都是合法的。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)