一般指针 和 指向指针的指针

1、指向整型的指针

#include<stdio.h>
int main()
{
int a=5;
int *p;
p=&a;
printf("a=%d &a=%x *p=%d p=%x \n",a,&a,*p,p);
printf("指针变量p的地址=%x\n",&p);

}

a    &a *p p
5  12ff7c 5 12ff7c
&p  
12ff78  

2、 指向字符的指针

#include<stdio.h>
int main()
{
char str[5]="abcd";
char *p;
p=str;
printf("str=%s  p=%s  str=%x   *p=%c   p=%x \n", str, p, str, *p, p);
printf("指针变量p的地址=%x\n",&p);

}

为什么整型指针p输出的是地址,而字符型指针输出的是字符串呢,字符型指针里存放的不是地址吗?

这里我们来解释一下: 对于指针你用 %s 输出的便是字符串,用%x 便是地址

3、指向整型指针的指针

#include<stdio.h>
int main()
{
int a[6]={1,2,3,4,5};
int *p=a;
int *(*ptr)=&p; // 因为是指针,所以存放的是地址,所以要加 &

printf("a=%x\n",a); // 也就是数组的首地址 12ff68

printf("p=%x\n",p); // p指针变量 存储的值是 数组的首地址 12ff68

printf("&p=%x\n",&p); // p指针变量自身的地址是 12ff64

printf("ptr=%x\n",ptr); // ptr指针变量存储的是 P指针变量的地址 12ff64

printf("&ptr=%x\n",&ptr); // ptr 指针自身的地址12ff60

printf("*ptr=%x\n",*ptr); // *ptr 指的是 12ff68 地址

printf("**ptr=%d\n",**ptr); //**ptr =1

}

时间: 2024-10-10 04:19:19

一般指针 和 指向指针的指针的相关文章

指针总结以及常量指针与指向常量的指针与指向常量的常指针

/*指针总结: 1:指针未被初始化一个地址或刚删除一个指针都要将其初始化为0,否则的话将会导致该指针失控 2:假如不想改变一个指针,那么将该指针定义为const, 假如不想改变该指针指向的值,将指针指向的值定义为const 假如即不想改变指针又不想改变指针指向的值,那么将指针和指针指向的值都定义为const 在new堆中创建一个对象,然后将内存地址赋给指针,之后我们就可以通过内存地址访问堆中的对象, 假如要删除该对象,我们只需要使用关键字delete,那么就会删除指针指向的对象并释放存储对象的内

指针常量;常量指针;指向常量的指针常量

三个名词虽然非常绕嘴,不过说的非常准确.用中国话的语义分析就可以很方便地把三个概念区分开. 一) 常量指针. 常量是形容词,指针是名词,以指针为中心的一个偏正结构短语.这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量). 指针指向的对象是常量,那么这个对象不能被更改. 在C/C++中,常量指针是这样声明的: 1)const int *p; 2)int const *p; 常量指针的使用要注意,指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改,也

const指针,指向const的指针,指向const的const指针 -- C

int main() { //记忆方法:中间加个"是"字变得很好理解 /* 指针函数 */ void * f(); //按顺序写,先写指针(void *),再写函数(f()) //指针是函数 -- 这个指针是一个函数. /* 函数指针 */ void (* f)(); //函数是指针 -- 这个函数是一个指针. //暂时没想到怎么记忆. /* const 指针 */ const int * a; /* 指向 const 的指针 -- 指针 const*/ int * const b;

速记const 指针与指向const的指针

指向const的指针,它的意思是指针指向的内容是不能被修改的.它有两种写法. ` const int* p; (推荐) int const* p;` 再说const指针,它的意思是指针本身的值是不能被修改的.它只有一种写法 int* const p=一个地址; (因为指针本身的值是不能被修改的所以它必须被初始化) 这两种情况很难分清,你只需注意在const后面的是*符号还是变量,*在后说明,const的是指针指向的对象,变量在后说明const的是指针本身 版权声明:本文为博主原创文章,未经博主允

常量指针和指向常量的指针

3种与const.指针及指针指向的对象有关的情形: 1.指向常量对象的指针 2.指向某个对象的常量指针 3.指向常量对象的常量指针 在第一种情况中,我们不能修改被指向的对象,但可以使指针指向其他对象: const char* pstring("Some text"); 在第二种情况中,我们不能修改指针中存储的地址,但可以修改指针指向的对象: char* const pstring("Some text"); 在最后一种情况中,指针和被指向的对象都被定义成常量,因此都

指针常量&amp;指向常量的指针

3 4 #include "stdafx.h" 5 6 int main(int argc, char* argv[]) 7 { 8 int a; 9 int b; 10 int* const p1 = &a; //常量指针,指针不可以改,但是指针指向的内容可以改. 11 const int* p2; //指向常量的指针,指针可以改,但是指针指向的内容不可以改. 12 13 const int c = 3; 14 15 a = 1; 16 b = 2; 17 // p1 = &

指针的内容 &nbsp; 指针的地址 指针所指向的内容 指针的类型 指针所指向的类型

这几个个东东很具有迷惑性. int a=10;      //假设a的地址是 0x0000004C int *p;           //假设p的地址是 0x0035FA94 p=&a; 指针的内容:指针里面存放的是地址. 指针p里面存放的是a的地址(&a).即指针p里面存放的内容是0x0000004C. 指针的地址:指针本身的地址. 指针p的地址就是&p.指针p的地址是0x0035FA94 指针所指向的内容:也就是指针里面存放的地址,那块地址里面存放的内容,通过对指针进行*引用

常指针和指向常量的指针和指向常量的常指针

(1)指向常量的指针:是一个指向的内容是常量的指针变量,const int *p=&x;不可修改*p的内容,但可以让指针p指向另一个地址,和int const *p一样 (2)常指针:int *const p=&x指针本身是个常量,固定指向某一变量,因此p不可变,但是*p可变 (3)指向常量的常指针:const int *const p=&x,指针p永远指向x,并且不能通过它修改它指向的地址的内容

【转】const int *p和int * const p的区别(常量指针与指向常量的指针)

[转]作者:xwdreamer   出处:http://www.cnblogs.com/xwdreamer 对于指针和常量,有以下三种形式都是正确的: const char * myPtr = &char_A;//指向常量的指针 char * const myPtr = &char_A;//常量的指针 const char * const myPtr = &char_A;//指向常量的常量指针 下面依次对这三种类型进行介绍. 因为*操作符是左操作符,左操作符的优先级是从右到左,对于

C语言数组指针(指向数组的指针)

注意:数组指针的定义,与指针数组的区别 转载:http://c.biancheng.net/cpp/biancheng/view/162.html 指向多维数组元素的指针变量 ① 指向数组元素的指针变量[例6.7]输出二维数组各元素的值.这里采用的方法是用基类型为整型的指针变量先后指向各元素,逐个输出它们的值. #include <iostream> using namespace std; int main( ) { int a[3][4]={1,3,5,7,9,11,13,15,17,19