每次在堆中为链表分配内存时,我们都会得到一个地址,该地址链接到链表的下一个变量,而head是一个指向链表初学者节点的指针。
如果我们执行head = head + 1
,则它指向堆的下一个链表,或者指向堆的随机存储器,或者指向堆中初学者列表的下一个存储器。
答案 0 :(得分:0)
它指向您不应该访问的第一个元素之后的存储区域。
我认为您将数组的概念与链表混淆了。如果使用数组,则head = head + 1
将为您提供数组中的下一个元素。但是在链接列表上,每个成员在内存中都有不同的位置,而获得该位置的唯一方法是取消引用前一个元素的next
成员
答案 1 :(得分:0)
如果我们执行head = head + 1,则它指向下一个链表,或者指向堆的随机内存,或者指向堆中初学者列表的下一个内存。
假设using System;
using System.Collections;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Storage.Blob;
// For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
namespace blobApitest
{
[Route("api/[controller]")]
[EnableCors("MyPolicy")]
public class BlobController : Controller
{
private CloudBlobClient cloudBlobClient;
public BlobController(CloudBlobClient cloudBlobClient)
{
this.cloudBlobClient = cloudBlobClient;
}
[HttpPost()]
public OkObjectResult upload([FromForm] IFormFile file)
{
string FileName = file.FileName;
var container = cloudBlobClient.GetContainerReference("<your container name>");
var blob = container.GetBlockBlobReference(FileName);
blob.UploadFromStream(file.OpenReadStream());
return Ok("uploaded");
}
[HttpGet()]
public OkObjectResult GetAll() {
var bloblist = new ArrayList();
var container = cloudBlobClient.GetContainerReference("<your container name>");
SharedAccessBlobPolicy ReadOnly = new SharedAccessBlobPolicy()
{
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
Permissions = SharedAccessBlobPermissions.Read
};
var sas = container.GetSharedAccessSignature(ReadOnly);
foreach (var blob in container.ListBlobs()) {
bloblist.Add(blob.Uri+sas);
}
return Ok(bloblist);
}
}
}
最初指向正确类型的有效对象,在该语句之后,head
指向刚指向其最初指向的对象的末端。取决于很多因素,这可能会使它指向下一个节点,也可能不会使它指向下一个节点,但其中的一些不受您的控制,但是通常head
的新值不是指向下一个节点。
加法运算对head
最初指向的对象的重要性一无所知。任何类型的指针都是相同的操作。