所以我们有一个实际上代表链表节点的结构。也是指向节点的指针。
typedef struct node{
int value;
struct node *next;
}node;
node* head=NULL;
如果我要使用malloc动态分配指针,
head=malloc(sizeof(node));
这意味着我正在创建一些内存空间,节点大小,并且head指向它。
我想知道这个head=malloc(sizeof(node*));
之间的区别,正如你在sizeof中看到它有节点*而不是节点。现在我真的觉得我一直都不知道malloc到底做了什么!
答案 0 :(得分:2)
\d{5}
是整个结构的大小(以字节为单位),可以是任意大的。 sizeof(node)
是指针变量的大小,无论结构有多大,它都是固定的(在大多数系统中它都非常小)。
答案 1 :(得分:2)
head=malloc(sizeof(node*));
将在内存中分配一个空格,以便将POINTER保存到node类型的对象。
head=malloc(sizeof(node));
将为结构本身分配空间,并返回该内存空间的地址,您将在head
变量
有关详细信息,请查看有关Malloc的其他问题。 How do free and malloc work in C?
答案 2 :(得分:1)
<html manifest="" lang="en-US">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta charset="UTF-8">
<title>My Application</title>
<!-- The line below must be kept intact for Sencha Command to build your application -->
<script id="microloader" type="text/javascript" src="bootstrap.js"></script>
<style>
.spinner_container{
padding: 8px;
background-color:#e5e5e5;
border-radius: 3px;
width: 250px;
height: 100px;
position: absolute;
z-index: 15;
top: 50%;
left: 50%;
margin: -100px 0 0 -50px;
}
.spinner_my_app{
padding: 83px 0px 21px 17px;
background-image: url('image_url');
background-repeat:no-repeat;
background-position: center 0;
color: #666666;
font: normal 13px helvetica, arial, verdana, sans-serif;
}
</style>
</head>
<body>
<div class="spinner_container" id="page-loader">
<div class="spinner_my_app" id="spinner_text"></div>
</div>
<script>
function getSearchParameters() {
//Get window parameters from query string and transform into an object
return {lang: "en"};
}
var params = getSearchParameters();
if(params["lang"]){
if(params["lang"].indexOf('fr') > -1){
document.getElementById("spinner_text").innerHTML += "Loading My Application(French Translation)...";
}else{
document.getElementById("spinner_text").innerHTML += "Loading My Application®...";
}
}else{
document.getElementById("spinner_text").innerHTML += "Loading My Application®...";
}
</script>
</body>
</html>
不正确。对head=malloc(sizeof(node*));
的调用会分配足够的内存来仅保留malloc
。 node*
必须指向node*
对象。这意味着您需要分配足够的内存来保存node
对象,而不是node
。