指针跳过多少字节?

时间:2015-06-06 18:02:41

标签: c++

如果我有以下代码:

p

这里,在递增1时,它会跳过sizeof(int)字节并转到p位置。如果char属于不同类型,请说1,那么它会跳过多少字节?它只是4 //I have action to get data public ActionResult ReturnPartial() { return PartialView("_LogIn"); } //here is ajax <p onclick="Func1()">Log In</p> <div id="here"></div> <script> function Func1() { $.ajax({ type: "GET", url: '@(Url.Action("ReturnPartial", "Registration"))', success: function (data) { $("#here").html(data); }, error: function (xhr, ajaxOptions, thrownError) { alert("Failed to retrieve view"); } }); } </script> 吗?

2 个答案:

答案 0 :(得分:2)

它将跳过sizeof(decltype(*p))个字节。换句话说,它将跳过p类型的大小。

在这种情况下,p的类型为int*,因此会跳过sizeof(int)个字节。但是,如果p的类型为char*,则会跳过sizeof(char)个字节。

答案 1 :(得分:1)

本声明

int * p = (int*)malloc(2);

一般情况下是不正确的。正确的陈述看起来像

int * p = (int*)malloc(2 * sizeof( int ) );

正如你自己正确指出的那样

  

这里,在递增p时,它跳过sizeof(int)字节并转到1   位置

另一方面,C ++和C中的sizeof( char )总是等于1。所以根据你自己的陈述

  

这里,在递增p时,它跳过 sizeof(char)字节并转到1   位置