我在一本书中有这个例子:
#define ALLOCSIZE 10000 /* size of available space */
static char allocbuf[ALLOCSIZE]; /* storage for alloc */
static char *allocp = allocbuf; /* next free position */
char *alloc(int n) /* return pointer to n characters */
{
if (allocbuf + ALLOCSIZE - allocp >= n) { /* it fits */
allocp += n;
return allocp - n; /* old p */
} else /* not enough room */
return 0;
}
void afree(char *p) /* free storage pointed to by p */
{
if (p >= allocbuf && p < allocbuf + ALLOCSIZE)
allocp = p;
}
我需要知道allocbuf
代表什么(它的值),因此它用于:
if (allocbuf + ALLOCSIZE - allocp >= n)
答案 0 :(得分:2)
引用C11
,章节§6.3.2.1/ p3,(强调我的)
除非它是
sizeof
运算符,_Alignof
运算符或者&
运算符的操作数。 一元allocbuf
运算符,或者是用于初始化数组的字符串文字,一个表达式 type ''类型''的数组被转换为类型''指向类型''指针的表达式 到数组对象的初始元素并且不是左值。 [...]
因此,在用作
的代码中,if (allocbuf + ALLOCSIZE - allocp >= n) {
是一种数组类型
var mymodule = angular.module('mymodule', ['ngRoute']);
mymodule.config(function($routeProvider) {
$routeProvider
.when('/', {
templateUrl : 'pages/enter.html',
controller : 'SharedController'
})
.when('/chat', {
templateUrl : 'pages/chat.html',
controller : 'cntrlChat'
});
});
mymodule.factory('myService', function() {
var savedData = {}
var set=function (data) {
savedData = data;
}
function get() {
return savedData;
}
return {
set: set,
get: get
}
});
mymodule.controller('SharedController', ['$scope', 'myService','$location',
function($scope, myService, $location){
$scope.updateMsg = function (msg) {
myService.set(msg);
$location.path("chat");
}
$scope.getMsg = function () {
$scope.message = myService.get();
}
}]);
mymodule.controller("cntrlChat", ['$scope', 'myService','$q','$timeout',
function($scope, myService,$q,$timeout){
var socket = io();
$scope.messages = [];
$scope.room= myService.get();
socket.emit('room', $scope.room);
$scope.submit=function(){
socket.emit('chat_message',{ room: $scope.room, msg: $scope.room+": "+$scope.insertedText });
$scope.insertedText='';
return false;
}
socket.on('chat_message', function(msg){
$scope.$apply(function() {
$scope.messages.push(msg);
});
});
socket.on('info_message', function(msg){
$scope.$apply(function() {
$scope.info=msg;
});
});
$scope.isUserTyping= function() {
var runTwoFunctionWithSleepBetweenThem=function(foo1, foo2, time) {
$q.when(foo1()).then(() => $timeout(foo2, time));
}
runTwoFunctionWithSleepBetweenThem(function (){socket.emit('info_message', { room: $scope.room, msg: 'user is typing...' })},
function (){socket.emit('info_message', { room: $scope.room, msg: '' });},1500);
}
}]);
会衰减到指向数组第一个元素的指针。
答案 1 :(得分:1)
在这种情况下,数组衰减到指向其存储位置的指针。换句话说:指向其第一个元素的指针。
你可以使用allocbuf
(或更好的:&allocbuf[0]
更好地传达&#34;指向第一个元素&#34;)的含义以获得指向第一个元素的指针,并且allocp
旨在指向下一个自由元素。因此allocp - allocbuf
将为您提供元素数量&#34;使用&#34;。