【问题标题】:Memory addressing and pointers内存寻址和指针
【发布时间】:2015-03-05 13:12:38
【问题描述】:

每当一个指针变量加一时,它将指向下一个整数的位置(在本例中为前四个字节)作为跨越四个字节的 int 变量数据。


如何访问每个字节地址并打印其中存储的值?

#include <stdio.h>
int main(int argc, char* argv[])
 {
   int array[2] = {20,30};
   int *iptr ;
   iptr = array ;
   printf("Address of data = %p\n", &array[0]);
   printf("Address of data = %p\n", &array[1]);
 }

【问题讨论】:

    标签: c pointers memory


    【解决方案1】:

    如何访问每个字节地址并打印其中存储的值?

    比如下面这种方式

    unsigned char *p = ( unsigned char * )array;
    for ( size_t i = 0; i < sizeof( array ); i++ )
    {
        printf( "%d ", p[i] ); 
    }
    

    【讨论】:

      【解决方案2】:

      如果您使用char*unsigned char*,递增指针将指向下一个字节。

      【讨论】:

        【解决方案3】:

        尝试将int *iptr 更改为char *iptr 然后打印printf("%d", iptr[0]);

        【讨论】:

          猜你喜欢
          • 2016-01-13
          • 1970-01-01
          • 1970-01-01
          • 2015-06-25
          • 2020-07-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多