- 浏览: 543421 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (231)
- 一个操作系统的实现 (20)
- 汇编(NASM) (12)
- Linux编程 (11)
- 项目管理 (4)
- 计算机网络 (8)
- 设计模式(抽象&封装) (17)
- 数据结构和算法 (32)
- java基础 (6)
- UML细节 (2)
- C/C++ (31)
- Windows (2)
- 乱七八糟 (13)
- MyLaB (6)
- 系统程序员-成长计划 (8)
- POJ部分题目 (10)
- 数学 (6)
- 分布式 & 云计算 (2)
- python (13)
- 面试 (1)
- 链接、装载与库 (11)
- java并行编程 (3)
- 数据库 (0)
- 体系结构 (3)
- C++ template / STL (4)
- Linux环境和脚本 (6)
最新评论
-
chuanwang66:
默默水塘 写道typedef void(*Fun)(void) ...
C++虚函数表(转) -
默默水塘:
typedef void(*Fun)(void);
C++虚函数表(转) -
lishaoqingmn:
写的很好,例子简单明了,将观察者模式都表达了出来。
这里是ja ...
观察者模式——Observer
指针运算
参见这里==> http://c.jpkc.cqepc.com.cn/c_resource/C_Cai_assistant/9/9-2.htm
#include <iostream> using namespace std; /* 输出: 10 20 30 40 50 0x7e17f0 10 0x7e17f4 20 ----------------- 0x7e17f4 20 0x7e17f4 21 ----------------- 0x7e17f4 21 30 ----------------- 0x7e17f8 30 31 0x7e17f8 31 ----------------- */ int main(){ //int数组{10,20,30,40,50} int *p=(int *)malloc(5*sizeof(int)); for(int i=0;i<5;i++){ *(p+i)=(i+1)*10; } //输出值 for(int i=0;i<5;i++){ cout<<*(p+i)<<"\t"; } cout<<endl; //*p++ cout<<p<<endl; cout<<*p++<<endl; //这里的++是对指针的运算 cout<<p<<endl; cout<<*p<<endl; cout<<"-----------------"<<endl; //(*p)++ cout<<p<<endl; cout<<(*p)++<<endl; //这里的++是对指针指向的内容运算 cout<<p<<endl; cout<<*p<<endl; cout<<"-----------------"<<endl; //*++p; ==> 指++ ,再取出指向的单元内容 cout<<p<<endl; cout<<*p<<endl; cout<<*++p<<endl; cout<<"-----------------"<<endl; //++*p; ==> 指针指向的内容加1 cout<<p<<endl; cout<<*p<<endl; cout<<++*p<<endl; cout<<p<<endl; cout<<*p<<endl; cout<<"-----------------"<<endl; free(p); system("pause"); return 0; }
**************************************************************
指针常量,指针变量(sizeof使用注意)
1. 关于sizeof()
(1) int h[10];
sizeof(h)==10*4 //h:指针常量
(2) int *h;
sizeof(h)==4 //h:指针变量
(3) void fun(int h[10]){
sizeof(h)==4 //h:指针变量
}
2. 指针常量,指针变量
在传参数的时候,实参是指针常量,那个副本指针就成了指针变量了
(1)指针常量:指针h内容不能修改,指向的地址内容也可以修改
(2)指针变量:指针h内容可以修改,指向的地址内容也可以修改
#include <stdio.h> #include <iostream> using namespace std; int h[10]; bool flag=false; void print(){ int i; for(i=0;i<10;i++){ printf("%d\t",h[i]); } printf("\n"); } void fun(int *h){ int i; for(i=0;i<10;i++) h[i]=i; } void fun1(int* h){ memset(h,0,sizeof(h)); } void fun2(int h[10]){ memset(h,-1,sizeof(h)); } int main(void){ print(); fun(h); print(); fun1(h); print(); fun2(h); print(); memset(h,-1,sizeof(h)); print(); return 0; }
心得:
一般在使用memset()时,都不要将memset()放到子程序中初始化一个指针参数对应数组,直接在外面memset()就好了。避免出错!
发表评论
-
C++引用计数
2013-12-29 14:48 1165主要参考《提高C++性能的编程技术》第12章 引用计数 ... -
string.h(二)C的字符串分隔函数strtok()
2013-12-19 13:25 1508char *strtok(char *str1, c ... -
关于size_t 和 ptrdiff_t 【转】
2013-12-12 18:57 859Abstract Introduction size ... -
new, operator new 和 placement new
2013-12-12 17:08 1077一、new 和 delete 的过程: 在进行一切讲解之 ... -
C/C++柔性数组 char[0]
2013-11-08 15:57 1009在标准C和C++中0长数组 ... -
填充与对齐——指定变量的地址偏移【转】
2013-11-08 14:53 858转自 http://hi.baidu.com/bai_ye ... -
数组和指针并不同(总结《C专家编程chap4》)
2013-10-06 14:55 940左值(地址)和右值(地址的内容): 1. 使用数组 ... -
细说C++全局变量、局部变量和静态局部变量【转】
2013-08-15 17:17 863转自http://see.xidian.ed ... -
strcpy和strncpy用法和区别(转)
2013-07-31 17:37 31strcpy和strncpy用法和区别 转自:http ... -
stl iterator&const_iterator
2013-07-11 09:38 14iterator和const_iterator访问conta ... -
C++类对象创建过程揭密(转载)
2013-05-24 16:56 927转载:http://blog.csdn.net ... -
C调用汇编
2013-03-27 20:28 1460一、汇编语言的两种语法格式 Intel格式: 大 ... -
C++四个类型转换关键字const_cast, static_cast, dynamic_cast, reinterpret_cast
2013-02-27 10:13 2536C风格的强制类型转换( ... -
C/C++中内存模型
2012-12-30 11:07 1634一直以来,C++ ... -
map使用
2012-12-29 15:21 35需要#include <map> 定义map& ... -
C++调用C
2012-11-29 22:42 1279一般地,C++调用C有两种形式(网上资料一般没讲全): ... -
关于计算精度
2012-11-22 14:53 876本文是Sam我总结的,在C++学习过程中常见的一些涉及 ... -
C++随机数
2012-11-07 19:41 913C++随机数 #include<iostream ... -
C文件操作(一)
2012-11-07 19:11 1612C文件操作(流式文件 &a ... -
C++中的内联函数inline
2012-07-13 19:16 1073在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者 ...
相关推荐
指针变量的定义和运算指针变量作函数参数 指针变量是 C 语言中的一个重要概念,它允许程序员直接访问和操作内存中的数据。指针变量可以作为函数参数,传递给函数,以便在函数中进行操作。下面是关于指针变量的定义...
指针变量运算与指针数组相关知识点 指针变量是C语言编程中一个非常重要的概念,它允许我们直接访问和操作内存中的数据。指针变量是存储了数据地址的一种变量,它可以是数组、字符串、函数或普通变量的地址。 1. ...
本文将详细讲解指针变量的定义、运算以及指针变量作为函数参数的用法。 首先,我们需要理解指针和指针变量的基本概念。在计算机中,所有的数据都是存储在内存中的,每个内存单元都有一个唯一的地址。指针就是一个...
数组的指针和指向数组的指针变量是编程语言中一个重要的概念。数组的指针是指向数组在内存中的起始地址,而指向数组的指针变量是指向数组元素的指针变量。 概念: * 数组的指针:数组在内存中的起始地址,数组元素...
本文将深入探讨指针与指针变量的基础概念、如何声明与初始化指针变量、指针的算术运算以及它们在实际编程中的应用。 #### 1. 指针与指针变量的定义 - **指针**:指针是一种特殊的变量,它存储的是另一个变量或数据...
《C语言指针变量的运算》 在C语言中,指针是编程中非常重要的一个概念,它能够存储变量的内存地址,进而实现对内存的直接操作。本篇将深入探讨C语言指针变量的运算,包括指针的加法、减法以及比较运算。 9.1 指针...
指针变量是C语言程序设计中的一种基本数据类型,它占有重要地位,指针变量的灵活性是C语言的主要特色之一。指针变量能够方便表示各种复合数据类型,可以使用数组和字符串,同时也可以处理内存地址。 指针和地址的...
指针变量存储的是另一个变量的内存地址。当我们声明一个指针并将其初始化为某个变量的地址时,如`int *p = &var;`,`p`就指向了`var`所在的内存位置。 接下来,我们讨论下标运算。在C/C++中,数组名本质上是首元素...
也用于声明指针变量。 指针的算术运算: 指针可以进行加法和减法运算,但只能与整数进行运算,结果仍然是一个指针。 指针的加法运算会根据指针指向的数据类型大小进行偏移。 指针与数组: 数组名本身就是一个指向...
浅谈C语言中指针变量的定义与应用 _pointer_是C语言中最具特色的内容,也是学习C语言的一个难点。正确而灵活地运用它,可以有效地表示复杂的数据类型,使程序简洁、...C语言、指针、指针变量、指针运算、数组、字符串
- `*` 表示这是一个指针变量。 - `pointer_name` 是指针变量的名字。 例如: - `int *ptr;` 定义了一个指向整型变量的指针 `ptr`。 - `char *ptr;` 定义了一个指向字符型变量的指针 `ptr`。 #### 四、多级指针 ...
这个压缩包“用P0 口显示指针运算结果.zip”包含了一个C语言程序(ex26.c)和相关开发环境文件,以及一个名为“重要说明.txt”的文档,很可能是用来解释如何通过P0口显示指针运算的结果。 首先,我们要理解指针在...
指针赋值运算将变量地址赋给指针变量,或者将一个指针变量的值赋给另一个同类型指针变量。取内容运算符*用于访问指针指向地址的内存内容。指针的加减运算通常用于指针指向数组元素时,可以移动指针到数组的其他元素...
` 声明了一个名为 `p` 的指针变量,指向一个整型变量。 知识点 2:指针的运算 题目 3 和 4 涉及到指针的运算。指针运算包括指针的加法、减法、比较等操作。例如,`p++` 将指针 `p` 递增到下一个元素,而 `*p` 则是...
指针变量的分类包括简单变量、指针变量、一维数组变量等。在教学中,笔者对指针变量的形式做了介绍,强调了地址和值的关系。例如,指针变量p可以保存简单变量a的地址(门牌号),而该门牌号的房间中存的是数值10。 ...
如果有一个指针变量,它存储了一个普通变量的地址,那么二级指针就存储了这个指针变量的地址。在C语言中,一个指针变量的声明通常使用星号(*)来表示。例如,int *a是一个指向整型变量的指针,而int **b是一个指向...
通俗地说,就是指针变量能够存储哪种类型的地址。确定指针类型的最简单方法是从指针声明语句中去除指针名称和星号(*),剩余的部分即为指针的类型。例如: - `int *ptr;` 的指针类型是 `int*`。 - `char *ptr;` 的...
10.2.1 定义一个指针变量 定义指针变量时,我们需要使用星号(*),如`int *p;`定义了一个指向整型变量的指针`p`。 10.2.2 指针变量的引用 获取变量地址使用取地址运算符(&),如`int x = 10; int *p = &x;`,此时`p`...
在C语言中,指针可以声明为一个指针变量,例如:`int *p;`,其中`p`是一个指向整型变量的指针。 二、指针运算 指针运算是指针的一种操作,包括指针的加法、减法、乘法、除法等。例如,`*p`表示指针`p`所指向的变量...
在一个指针变量中存放一个数组的首地址,因为数组是连续存放的,通过访问指针变量取得数组的首地址,也就找到了该数组。在C语言中,一种数据类型或数据结构往往占有一组连续的内存单元,用指针描述一个数据结构的首...