`

指针的基本操作以及关于指针的注意事项

 
阅读更多

一. 指针的基本操作有:赋值(assignment),求值(value-finding)或取值(dereferencing),区指针地址,将一个整数家给指针,增加指针的值,从指针中减去一个整数,减小指针的值,求差值(Differencing),比较。

下面以一个例子进行说明:

 

#include<stdio.h>


int main(void)
{
	int *ptr1,*ptr2,*ptr3;
	int urn[5] = {100,200,300,400,500};

	ptr1 = urn;   //把一个地址赋给指针
	ptr2 = &urn[2];  //把一个地址赋给指针

	printf("ptr1 = %p,*ptr1 = %d,&ptr1 = %p\n",ptr1,*ptr1,&ptr1);
  //指针加法
	ptr3 = ptr1 +4; 
	printf("nadding an int to a pointer:\n");
	printf("ptr1 +4 = %p,*(ptr1 +3) = %d\n",ptr1+4,*(ptr1+3));

	ptr1++;  //递增指针
	printf("\n values after ptr++\n");
	printf("ptr1 = %p,*ptr1 = %d,&ptr1 = %p\n",ptr1,*ptr1,&ptr1);

	ptr2--;  //递减指针
    printf("\n values after ptr--\n");
	printf("ptr2 = %p,*ptr2 = %d,&ptr2 = %p\n",ptr2,*ptr2,&ptr2);

	--ptr1;   //恢复初始值
	++ptr2;
	printf("\npointers reset to original values:\n");
	printf("ptr1 = %p,ptr2 = %p",ptr1,ptr2);

	printf("\nsubstracting one pointer from another:\n");  //一个指针减去另一个指针
	printf("ptr2 = %p,ptr1 = %p,ptr2 -ptr1 = %d\n",&ptr2,ptr1,ptr2-ptr1);
	
	printf("\nsubstracting an int from another:\n");
	printf("ptr3 = %p,ptr3 -2 = %p\n",ptr3,ptr3-2);   //一个指针减去一个整数

	return 0;
}

 运行结果:

 

ptr1 = 0026FE5C,*ptr1 = 100,&ptr1 = 0026FE90

nadding an int to a pointer:

ptr1 +4 = 0026FE6C,*(ptr1 +3) = 400

 

 values after ptr++

ptr1 = 0026FE60,*ptr1 = 200,&ptr1 = 0026FE90

 

 values after ptr--

ptr2 = 0026FE60,*ptr2 = 200,&ptr2 = 0026FE84

 

pointers reset to original values:

ptr1 = 0026FE5C,ptr2 = 0026FE64

substracting one pointer from another:

ptr2 = 0026FE84,ptr1 = 0026FE5C,ptr2 -ptr1 = 2

 

substracting an int from another:

ptr3 = 0026FE6C,ptr3 -2 = 0026FE64

请按任意键继续. . .

 

二.指针的注意事项

1.不能对未初始化的指针取值(赋值)

  如:

int *pt;    //一个未初始化的指针

*pt = 5;  //一个可怕的错误

   这段代码的第二行把数值5存储在pt所指向的地址。但是由于pt未初始化,因此的的值是随机的,不知道5会被存储到什么位置。这个位置也许会对系统危害不大,但也许会覆盖程序

数据或者代码,甚至导致程序的崩溃。切记:当创建一个指针时,系统只分配了用来存储指针本身的内存空间,并不分配用来存储数据的内容空间。因此在使用指针之前,必须给它赋予一个

以分配的内存地址。比如,可把一个以存在的变量地址赋给指针,或者使用函数malloc()来首先分配内存。

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    C语言指针注意事项

    要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里总会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级...

    指针注意事项

    指针有关事项,对于空指针和未赋值的指针的一些辨析,同时也加入了void指针的赋值和用法

    c语言指针常见指针及如何使用附带相关基本概念

    c语言指针常见指针及如何使用附带相关基本概念 C语言中的指针是一种特殊的数据类型,它存储了一个内存...使用C语言指针需要掌握指针的基本概念和语法规则,理解指针的应用场景和注意事项,才能编写出高效、可靠的程序。

    void 指针详解(用法、注意事项等等 )

    许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。

    软件开发培训之指针使用注意事项

    □ 要想在编写代码的时候尽可能避免指针带来的各种陷阱和问题,就需要知道不恰当地使用指针到底会引发哪些问题, 为什么会引发这些问题,以及如何去解决这些问题。 1、使用空指针 2、使用指向随机内容的指针 3、使用...

    C语言指针总结

    指针是C语言中的难点,也是C语言中的精华所在,本文档列举了指针使用中的常见注意事项及易混淆知识点的对比,为C语言的初学者掌握指针提供了清晰的思路。

    指针详解.ppt

    指针详解.ppt,讲解各种指针的操作,注意事项,优缺点等等。

    指针作为函数参数的注意事项.cpp

    指针作为函数参数的注意事项.cpp

    C语言 指针问题 指针问题

    详细讲解了指针的用法和注意事项,指针是我们在学习C语言过程中的一个难点,所以就我个人的一点心得和大家分享一下

    指针用法总结,指针用法大全

    详细介绍了指针的用法及注意事项!让你不再害怕指针。

    使用指针式万用表时的注意事项

    文章简单介绍了指针式万用表在使用时的注意事项

    指针函数的应用

    了解指针函数,及使用指针函数时的注意事项,以说明

    指针的使用注意

    一些指针的使用注意事项,可以帮助初学者更好的了解C语言中指针的使用方法

    C语言指针精讲.txt

    注:1.附件为下载链接 2.... 指针是C语言中的重点和难点,很多同学在学习C语言的时候,就是因为无法掌握指针的概念而...本课将会为大家深入讲解指针的概念、应用以及指针的注意事项,让您彻底驾驭C语言中的指针!

    c++ shared_ptr智能指针使用注意事项

    它基本上解决了在使用c++开发过程中不可避免的使用指针而遇到的许多问题,常见的毫无疑问是内存泄漏和内存的提前释放,还有一些关于指针内存申请而产生的异常问题等。而要想较好的使用shared_ptr来完全取代指针绝非...

    指针式万用表的使用方法

    详细的介绍了指针式万用表的使用方法,读数,以及注意事项

    结构体指针变量使用时的注意事项

    本文介绍了使用指针操作结构体时应该注意的问题。

    指针式接地电阻测试仪测试方法与注意事项

    指针式接地电阻测试仪的测试方法以及注意事项

    接地电阻测试仪使用与注意事项

    接地电阻测试仪使用与注意事项 一、测试方法: 1、将仪表放置水平位置,检查检流计的指针是否在中心线上,否则应用零位调整器将其调整于中心线上。 2、将“倍率标度”置于最大倍数,慢慢转动发电机的摇把,同时...

    c语言指针和内存

    常用的C 语言中的指针和内存泄漏 一些注意事项

Global site tag (gtag.js) - Google Analytics