打印指针指向的地址值

废话不多说,直接上错误代码:

static void print_cpu_src(uint8_t * src,int stride){
    int i,j;
    printf("Magnum  cpu src addr == %p, stride ==%d:\n",&src,stride);
     for (i = 0; i < 11; ++i) {
             printf("\n");
            for (j =0; j < 4; ++j) {
                          printf("%d ,", src[j]);
            }
            src +=  stride;
            printf("new src addr %p\n",&src);
          }
     printf("\n");
}

输出结果:

Magnum cpu src addr == 000000000022F4C0, stride ==800:

129 ,124 ,122 ,124 ,new src addr 000000000022F4C0

130 ,125 ,122 ,125 ,new src addr 000000000022F4C0

132 ,125 ,123 ,125 ,new src addr 000000000022F4C0

132 ,126 ,123 ,125 ,new src addr 000000000022F4C0

151 ,127 ,124 ,126 ,new src addr 000000000022F4C0

151 ,127 ,125 ,126 ,new src addr 000000000022F4C0

153 ,128 ,125 ,127 ,new src addr 000000000022F4C0

154 ,128 ,125 ,127 ,new src addr 000000000022F4C0

157 ,129 ,125 ,127 ,new src addr 000000000022F4C0

158 ,129 ,125 ,127 ,new src addr 000000000022F4C0

161 ,130 ,125 ,128 ,new src addr 000000000022F4C0

每次输出的地址值都是一样的,自然想到其实输出的是指针变量的地址值,指针变量是没有变化的变化的是指向的内存地址。

修改,新的代码如下:

static void print_cpu_src(uint8_t * src,int stride){
    int i,j;
    printf("Magnum  cpu src addr == %p, stride ==%d:\n",(int)src,stride);
     for (i = 0; i < 11; ++i) {
             printf("\n");
            for (j =0; j < 4; ++j) {
                          printf("%d ,", src[j]);
            }
            src +=  stride;
            printf("new src addr %p\n",(int)src);
          }
     printf("\n");
}

总结:

其实指针 *src,  src 就是指向的地址值,直接打印它即可

打印指针指向的地址值,布布扣,bubuko.com

时间: 2024-10-24 14:05:10

打印指针指向的地址值的相关文章

常量指针(指针指向的数值是常量)指针常量(指针指向的地址是无法改变的)

常量与常量指针 #include <iostream> using namespace std; int main() { int a = 3; const int *p = &a; cout << *p << endl; // *p = 20; // cout << *p << endl;//变量的值是常量,不能通过修改指向的变量的值,都是可以将指针进行指向别的地址. a = 20; cout << *p <<

【JAVA】java中char类型数组用数组名打印结果不是地址值而是数组内容

问题描述 引用型变量存储的是对象实例的地址值,如果直接打印变量,输出的应该是地址值. 数值型数组如int型数组:初始化后直接打印数组名,输出的是地址值. 但是:char类型数组无论是new还是直接赋值初始化,直接打印后显示的居然不是地址值,而是数组内容. 原因分析 char类型的数组就相当于一个字符串. 因为输出流System.out是PrintStream对象,PrintStream有多个重载的println方法,其中一个就是public void println(char[] x): 直接打

指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名(转)

1.指针与引用的区别: 指针是一块内存的地址值,而引用是一块内存的别名. 下面引自:http://www.cnblogs.com/kingln/articles/1129114.html 从概念上讲.指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变. 而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一

指针——内存和地址

刚刚看了篇博文: 北大硕士开米粉店,3个月后的最大收获与感悟是 里面的一些词,让我很触动,很有共鸣感, “书生式的无病呻吟”:确实,好像有很多时候觉得自己已经很苦逼了,可是看看那些在社会上用自己的双手为生计打拼的人,拿着国家津贴,父母的钱,却连最基本的学习都觉得苦,真是羞得无地自容啊! “理解和尊重”...不说废话了,下面记叙C语言的指针,一来知道指针是C语言的灵魂,二来,近来学习数据结构和算法,里面有很多指针的操作,理解还是有点困难呀! 1.计算机的内存由位(bit)组成,每个位可以容纳值0和

指针指向整数,字符,及字符串时,相应地址取法

指针指向整数时: 1 #include <iostream> 2 3 int main(void) 4 { 5 using namespace std; 6 int a = 10; 7 int *p = &a; 8 9 cout << "sizeof(p) = " << sizeof(p) << endl; 10 cout << "sizeof(&p) = " << sizeof

C++中cout输出字符型指针地址值的方法

#include<iostream> #include<string> using namespace std; int main(){ char c[3]={'a','b','c'}; char *p=c; cout<<*p<<' '<<(void*)p<<endl; cout<<*(p+1)<<' '<<static_cast<void*>(p+1)<<endl; cou

64bit机器 C implicit-function-declaration 函数返回指针 地址值截断问题

昨天碰到了问题,32bit机器正常,但64bit机器crash,把问题简化了下 func_a.h 声明了mystruct * func_a( ); func_a.c定义了 mystruct * func_a( ) { //mystruct * inner进行内存申请和赋值 //print  %p, inner-----address1 0x7ff87804b4a8 return inner; } func_b.c调用了func_a函数(但没有包含func_a的声明) mystruct * pt_

C语言中,为什么指针表达式的值+1.对应的地址值却+4?/为什么两个数组元素的地址相减之差不为地址之差?

在C语言中,我们常常用到的一个运算是让某个变量的值+1. 例如 M = M + 1. 而在实际运用中,我们发现 对于指针进行+1运算,算出来的结果是+4. 如下图 图中我们定义的 变量M 和指针Matrix如下: int M = 3; int* Matrix = {1,2,3}; 可以看到,对于M和 Matrix ,+1运算的效果是不同的. 这个差异是因为C语言的标准中规定了 加法与减法运算对于地址的操作和对于值的操作是不同的,如下文中粗体所示: C89 3.3.6 Additive opera

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点).class Solution { public: void CloneList(RandomListNode* pHead){ RandomListNode* cur = pHead; RandomListNode* temp = NULL; while(cur != NULL){ temp = new RandomListNode(0); temp->label = cur->label