指针系统学习8-小结

1.有关指针的数据类型的小结

 

2.指针运算小结

一、指针变量加(减)一个整数,会指向上(下)1(i)个元素
  例如:p++、p--、p+i、p-i、p+=i、p-=i等。

二、 指针变量赋值
  将一个变量地址赋给一个指针变量。如:
  p=&a;  (将变量a的地址赋给p)
  p=array; (将数组 array 首元素地址赋给p)
  p=&array[i];(将数组 array 第i个元素的地址赋给p)
  p=max;(max为已定义的函数,将 max 的入口地址赋给p)
  p1=p2;(p1 和 p2 都是指针变量,将 p2 的值赋给 p1)

三、指针变量可以有空值,即该指针变量不指向任何变量,可以这样表示:p = NULL;注意NULL为宏定义,其值为0. 

四、两个指针变量可以相减:如果两个指针变量都指向同一个数组中的元素,则两个指针变量值之差是两个指针之间的元素个数

 

 

 

五、两个指针变量比较:若两个指针指向同一个数组的元素,则可以进行比较,比较的是在数组中的序数。指向前面的元素的指针变量“小于”指向后面元素的指针变量。

3.关于 void类型

  void真正发挥的作用在于:

  1. 对函数返回的限定;
  2. 对函数参数的限定。

  例如:void abc( void );

 

1.void指针

  ANSI C新标准增加了一种“void”指针类型,即不指定它是指向哪一种类型数据的指针变量。

   例如:void *p;   表示指针变量p不指向一个确定的类型数据,它的作用仅仅是用来存放一个地址。

  void指针它可以指向任何类型数据。也就是说,可以用任何类型的指针直接给void指针赋值。但是,如果需要将void指针的值赋给其他类型的指针,则需要进行强制类型转换。


2.const指针
  三个例子谈谈const:

  example1:

#include <stdio.h>void main(void)
{const char *str= "Welcome to Fishc.com!\n\n";// 这个语句的含义是:声明一个名为str的指针变量,// 它指向一个字符型常量,const作用是使一个变量常量化,使其不能被改变,// 初始化str为指向字符串,"Welcome to Fishc.com!\n\n"printf("\n\n%s", str);
#if (0)str[0] = 'w';       //这条语句是错误的,因为是const常量对象,不能不赋值,但可以改变str指针的值 
#endifstr = "I love Fishc.com!\n\n";   //合法!
printf("\n\n%s", str);
}

  example2:

#include <stdio.h>void main(void)
{char * const str = "Welcome to Fishc.com!\n\n";// 常量指针是一个固定的指针,不可以改变它的值,但它所指的数据可以改变。
str[0] = 'w';       //合法!编译合法,但是执行结果出错,因为存放在data区,无法改写。#if( 0 )str = "I love Fishc.com!\n\n";   //非法!!
#endifprintf("\n\n%s", str);
}

  example2:

#include <stdio.h>void main(void)
{const char * const str = "Welcome to Fishc.com!\n\n";// 常量指针是一个固定的指针,不可以改变它的值,但它所指的数据可以改变。
str[0] = 'w';                   //非法!
str = "I love Fishc.com!\n\n";  //非法!!
printf("\n\n%s", str);
}

 

 

 

 



 

转载于:https://www.cnblogs.com/tianqizhi/p/10053026.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java项目中外接扫描仪无法使用_java – 扫描仪行不可用错误

我用两种不同的方法从两个不同的扫描仪对象调用Scanner.nextLine()方法.有时当我从第二种方法调用Scanner.nextLine()时,它会给我一个“行不可用”错误.可能是什么问题&#xff1f;import java.util.Scanner;public class TicTacToe {private final String COMPUTER "com…

Spring集成–使用RMI通道适配器

1.引言 本文介绍了如何使用Spring Integration RMI通道适配器通过RMI发送和接收消息。 它由以下部分组成&#xff1a; 实施服务&#xff1a;第一部分着重于创建和公开服务。 实现客户端&#xff1a;显示如何使用MessagingTemplate类调用服务。 抽象SI逻辑&#xff1a;最后&a…

mybatis 直接执行sql 【我】

Connection conn getConnection();// Connection conn this.ss.getConnection(); 返回Connection对象 try { String sql "UPDATE PARTY SET PARTY_NAME 测试0000 WHERE PARTY_ID 0;UPDATE PARTY SET PARTY_NAME 测试1111 WH…

jquery点击非div区域隐藏div

点击非div区域隐藏div&#xff0c;如图&#xff0c;点击圆的头像&#xff08;.person-msg&#xff09;弹出白色底框(.person-centre)。点击圆头像以外的区域隐藏白色底框 html代码 <div class"per_c"><div class"person-msg pull-right"><i…

几种常用的函数

range()函数: range(起始位置,终止位置,步长)  next()函数: __next__是迭代器方法变量.__next__() 带双下火线的魔术发那个方法 一般情况下不直接使用next(变量)带双下划线的所有方法都可能和内置函数有千丝万缕的联系iter()函数: 可迭代的迭代器 可迭代的.__iter__()迭代器…

java sql server连接字符串_关于Java:SQL Server的等效jdbc连接字符串

我目前正在使用以下连接字符串连接到数据库(该数据库与ServerIP在同一服务器上)&#xff1a;String constr "Data SourceServerIP,1433;Network LibraryDBMSSOCN;InitialCatalogdbName;User IDdbUserID;PassworddbUserPassword";在asp.net中使用时&#xff0c;此连接…

上传图片或文件 方法一

最近在巩固一些知识点&#xff0c;回过头看之前做过的项目&#xff0c;所以就在这里总结一下 话不多说&#xff0c;直接看源码 前端 publish-menu.jsp 1 <form action"PublishMenu" method"post" enctype"multipart/form-data" > 2 3 …

如何在Ubuntu上轻松安装Oracle Java

Ubuntu上的开发人员习惯于至少看到两种Java风格。 OpenJDK是Java运行时和编译器的开源构建。 Oracle JDK以此为基础&#xff0c;但是增加了一些封闭源组件。 从理论上讲&#xff0c;OpenJDK是Java 7的官方参考实现 &#xff0c;并且完全可以满足您的所有需求。 在实践中&#…

今天发现新大陆:haml和Emmet

其实一开始小渣渣我只是想接触一下&#xff08;css预处理器&#xff09;sass&#xff0c;可是突然冒出一个haml。 原文是酱紫的。 Sass 是采用 Ruby 语言编写的一款 CSS 预处理语言&#xff0c;它诞生于2007年&#xff0c;是最大的成熟的 CSS 预处理语言。最初它是为了配合 H…

Docker系列(五):.Net Core实现k8s健康探测机制

k8s通过liveness来探测微服务的存活性&#xff0c;判断什么时候该重启容器实现自愈。比如访问 Web 服务器时显示 500 内部错误&#xff0c;可能是系统超载&#xff0c;也可能是资源死锁&#xff0c;此时 httpd 进程并没有异常退出&#xff0c;在这种情况下重启容器可能是最直接…

编写java程序计算梯形面积_学习练习 java面向对象梯形面积

package com.hanqi;public class Ladder {double ShangDi;double XiaDi;double Gao;double MianJi;Ladder(double ShangDi, double XiaDi, double Gao){//使用参数来初始化属性//this 代表当前类this.ShangDi ShangDi;this.XiaDi XiaDi;this.Gao Gao;}//方法的命名&#xff…

02-再探MySQL数据库

一、数据类型 1、数值类型 a、整数类型 整数类型&#xff1a;TINYINT SMALLINT MEDIUMINT INT BIGINT 作用&#xff1a;存储年龄&#xff0c;等级&#xff0c;id&#xff0c;各种号码等。 tinyint[(m)] [unsigned] [zerofill]小整数&#xff0c;数据类型用于保存一些范围的整数…

如何在WebLogic Server中创建MySQL数据源

使用应用程序服务器的一个很酷的事情是&#xff0c;它允许您在应用程序外部创建DataSource&#xff0c;并且可以与线程池和事务管理器等一起管理它。对于WebLogic Server&#xff0c;它附带了许多内置的JDBC驱动程序&#xff0c;例如Oracle数据库和MySQL等随时可用。 在这里&am…

js原生带缩略图的图片切换效果

js原生带缩略图的图片切换效果 本例中用到的 moveElement(elementID,final_x,final_y,interval)是来自《JavaScript DOM编程艺术&#xff08;中文第二版&#xff09;》一书第10章中有一段代码。&#xff08;可以直接baidu&#xff09; 左边是banner图&#xff0c;右边是缩略图…

linux 基础10-磁盘配额管理

1. 基本概念 1.1 概念&#xff1a; 在linux系统中&#xff0c;由于是多人多任务的使用环境&#xff0c;所以会有多人共同使用一个硬盘空间的情况&#xff0c;如果其中少数几个人大量使用了硬盘空间的话&#xff0c;势必会压缩其他使用者的使用空间&#xff0c;因此管理员应该适…

java 全半角转换_Java 全半角转换

* 全角转半角的 转换函数* return String*/public static final String full2HalfChange(String QJstr){StringBuffer outStrBuf new StringBuffer("");String Tstr "";byte[] b null;for (int i 0; i < QJstr.length(); i) {Tstr QJstr.substring…

第九章:内存管理

内存管理 引用计数&#xff1a;垃圾回收机制的依据 a.变量的值被引用&#xff0c;该值的引用计数 1b.变量的值被解绑&#xff0c;该值的引用计数 -1c.引用计数为0时就会被垃圾回收机制回收​ 引用计数会出现循环引用问题&#xff1a;相互引用无法释放 a.两个变量引用其值&#…

Centos系统通过tar.gz包安装MySQL5.7

环境准备&#xff1a; 操作系统&#xff1a; http://vault.centos.org/6.5/isos/x86_64/ 下载 CentOS-6.5-x86_64-bin-DVD1.iso vmware workstation下安装系统 MySQL安装包连接地址&#xff1a; https://downloads.mysql.com/archives/community/ 下载 mysql-5…

java web转码_javaweb后台转码

为什么需要转码?客户端向服务器发送请求的四种情况:1、URL方式直接访问;2、页面链接(属于get请求);3、表单get提交;4、表单post提交1.url(url和页面链接):各大浏览器、各个操作系统对URL的URI、QueryString编码都可能存在不同.tomcat对URI的解码操作是首先获取Connector的解码…

微信小程序实战篇:商品属性联动选择(案例)

本期的微信小程序实战篇来做一个电商网站经常用到的-商品属性联动选择的效果&#xff0c;素材参考了一点点奶茶。 效果演示&#xff1a; 商品属性联动.gif代码示例 1、commodity.xml <!-- <view class"title">属性值联动选择</view> --> <!--…