这是用C计算数组长度的众所周知的代码:
sizeof(array)/sizeof(type)
Run Code Online (Sandbox Code Playgroud)
但我似乎无法找出作为函数参数传递的数组的长度:
#include <stdio.h>
int length(const char* array[]) {
return sizeof(array)/sizeof(char*);
}
int main() {
const char* friends[] = { "John", "Jack", "Jim" };
printf("%d %d", sizeof(friends)/sizeof(char*), length(friends)); // 3 1
}
Run Code Online (Sandbox Code Playgroud)
我假设数组通过值复制到函数参数作为常量指针,并且对它的引用应解决此问题,但此声明无效:
int length(const char**& array);
Run Code Online (Sandbox Code Playgroud)
我发现将数组长度作为第二个参数传递为冗余信息,但为什么标准声明main
如下:
int main(int argc, char** argv);
Run Code Online (Sandbox Code Playgroud)
请解释是否可以在函数参数中找出数组长度,如果是,那么为什么存在冗余main
.
我有一个对象有一些我想要获取和设置的受保护属性.对象看起来像
Fields_Form_Element_Location Object
(
[helper] => formText
[_allowEmpty:protected] => 1
[_autoInsertNotEmptyValidator:protected] => 1
[_belongsTo:protected] =>
[_description:protected] =>
[_disableLoadDefaultDecorators:protected] =>
[_errorMessages:protected] => Array
(
)
[_errors:protected] => Array
(
)
[_isErrorForced:protected] =>
[_label:protected] => Current City
[_value:protected] => 93399
[class] => field_container field_19 option_1 parent_1
)
Run Code Online (Sandbox Code Playgroud)
我想获得value
该对象的属性.当我尝试$obj->_value
或$obj->value
它产生错误.我搜索并找到了使用的解决方案PHP Reflection Class
.它在我的本地工作但在服务器PHP版本是5.2.17
因此我不能在那里使用此功能.那么任何解决方案如何获得这样的属性?
在C++ Primer Plus(2001,捷克语翻译)中,我发现了这些不同的模板特化语法:
功能模板
template <typename T> void foo(T);
Run Code Online (Sandbox Code Playgroud)
专业化语法
void foo(int param); // 1
void foo<int>(int param); // 2
template <> void foo<int>(int param); // 3
template <> void foo(int param); // 4
template void foo(int param); // 5
Run Code Online (Sandbox Code Playgroud)
谷歌搜索了一下,我发现只有3号例子.它们之间是否存在差异(通话,编译,使用)?其中一些是否已过时/弃用?为什么不使用No.1?
我想为mousewheel事件提供干净,漂亮的JavaScript,只支持最新版本的常见浏览器,而没有遗留代码的旧版本,没有任何JS框架.
鼠标轮事件在这里很好地解释.如何简化当前最新版本的浏览器?
我没有访问所有浏览器来测试它,所以caniuse.com对我很有帮助.唉,那里没有提到鼠标轮.
根据Derek的评论,我写了这个解决方案.它对所有浏览器都有效吗?
someObject.addEventListener("onwheel" in document ? "wheel" : "mousewheel", function(e) {
e.wheel = e.deltaY ? -e.deltaY : e.wheelDelta/40;
// custom code
});
Run Code Online (Sandbox Code Playgroud) 从什么是写在这里,new
分配在自由存储,同时malloc
采用堆和这两个术语往往意味着同样的事情.
根据此处的内容,realloc
可以将内存块移动到新位置.如果免费存储和堆是两个不同的内存空间,它是否意味着任何问题呢?
具体来说,我想知道它是否安全使用
int* data = new int[3];
// ...
int* mydata = (int*)realloc(data,6*sizeof(int));
Run Code Online (Sandbox Code Playgroud)
如果没有,是否还有其他方式可以安全地realloc
分配内存new
?我可以分配新的区域和memcpy
内容,但据我所知,realloc
如果可能的话可以使用相同的区域.
这非常简单,但捷克语(我的母语)不区分隐式和默认,所以我对一些捷克语翻译感到困惑,隐式和默认构造函数或构造函数调用之间的区别是什么.
struct Test {
Test(int n=0) { }
};
Run Code Online (Sandbox Code Playgroud)
你能用这些术语描述什么是:
?
是否可以TextBox
在C#中更改Windows窗体的背景图像?没有BackgroundImage
财产.我应该Paint
以某种方式覆盖该方法吗?
我有一个简单的"Hello world"C++程序,在Win XP下由MinGW g ++编译器编译为500kB可执行文件.有人说这是由libstdc ++.dll的iostream库和静态链接引起的.
使用-s链接器选项有点帮助(减小50%的大小),但我只满足于<10kB可执行文件.有没有办法如何使用MinGW编译器实现这一目标?便携性对我来说不是一个大问题.
是否可以使用动态链接将libstdc ++.dll与可执行文件一起复制?如果是这样,如何实现这一目标?
解决了:我使用的是MinGW 3.4.现在我更新到最新的MinGW 4.6,尺寸减少了90%到50kB,-s选项甚至减少到9kB,这已经足够了.无论如何 - 感谢大家的帮助.在这里你得到我的结果
使用iostream的C++ Hello World程序
MinGW | no options | -s option
------------------------------
3.4 | 500kB | 286 kB
4.6 | 50kB | 9 kB
Run Code Online (Sandbox Code Playgroud) 在PHP中,是否可以退出PHP代码块(即PHP标记)?
<?php
if (!A) phpexit();
print("1");
?>
<?php
print("2");
?>
Run Code Online (Sandbox Code Playgroud)
所以,如果A
是真的,那么结果是12
,如果A
是假,那么结果是2
.
我知道你可以用if语句或其他东西来做这个,但我想知道是否还有一些特殊的PHP函数可以做到这一点.
c++ ×4
php ×2
c ×1
c# ×1
code-design ×1
constructor ×1
executable ×1
html ×1
javascript ×1
lua ×1
mingw ×1
mousewheel ×1
object ×1
optimization ×1
php-5.2 ×1
pointers ×1
protected ×1
realloc ×1
textbox ×1
time ×1
winforms ×1