void(0)的作用

经常见<a href="javascript:void(0)" onclick="javascript:click();">aaa</a>

这种写法,但确不知为何要使用void(0)

今天在看书时得到答案,a标签是一个链接,而void(0)正是阻止了这次跳转。

所以void(0)不仅用于a标签中,也可以用于一段伪协议脚本的执行最后,这样也可以阻止页面跳转,并且可以得到想看到的执行结果。

JavaScript伪协议:

可以在一个浏览一个html的时候,在浏览器地址栏中输入JavaScript:要执行的代码(注意不要换行)。

如:JavaScript:R=0;x1=.1;y1=.05;x2=.25;y2=.24;x3=1.6;y3=.24;x4=300;y4=200;x5=300;y5=200;DI=document.images;DIL=DI.length;function A(){for(i=0;i-DIL;i++){DIS=DI[i].style;DIS.position='absolute';DIS.left=Math.cos(R*x1+i*x2+x3)*x4+x5;DIS.top=Math.sin(R*y1+i*y2+y3)*y4+y5;}R++}setInterval('A()',5);void(0);

在C/C++中,`void`关键字具有多种用途,其主要作用可以归纳为以下几个方面: ### 1. 表示函数无返回值 当`void`用作函数返回类型时,表示该函数不返回任何值。这是最常见的用法之一。例如: ```cpp void printHello() { printf("Hello, World!\n"); } ``` 在此示例中,`printHello`函数执行完毕后不会返回任何数据给调用者[^1]。 ### 2. 表示函数无参数 `void`也可以用于函数参数列表中,表示该函数不接受任何参数。例如: ```cpp void initSystem(void) { // 初始化系统资源 } ``` 上述`initSystem`函数明确表示它不需要任何输入参数[^1]。 ### 3. 用于指针类型 `void*`是一种特殊的指针类型,它可以指向任何数据类型。这种指针通常用于通用指针或作为函数参数传递任意类型的指针。例如: ```cpp void* allocateMemory(size_t size) { return malloc(size); } ``` 此函数返回一个`void*`类型的指针,可以被赋值给任何其他类型的指针变量。 ### 4. 在泛型编程中的使用 虽然C语言本身不支持泛型编程,但`void*`经常被用来实现类似泛型的行为。通过传递`void*`指针,函数可以处理不同类型的输入数据。例如: ```cpp void swap(void* a, void* b, size_t size) { char buffer[size]; memcpy(buffer, a, size); memcpy(a, b, size); memcpy(b, buffer, size); } ``` 在这个`swap`函数中,通过`void*`参数,可以交换两个任意类型的数据块。 ### 5. 用于函数指针 `void`还可以用于函数指针的声明中,表示该函数指针可以指向没有返回值的函数。例如: ```cpp void (*funcPtr)(void); ``` 这里声明了一个函数指针`funcPtr`,它可以指向一个无返回值且无参数的函数[^1]。 ### 6. 用于模板参数(C++) 在C++中,`void`有时也用于模板参数中,尤其是在元编程中,用于表示某些特殊类型的占位符。例如: ```cpp template<typename T> struct has_member { typedef char yes[1]; typedef char no[2]; template<typename C> static yes& test(decltype(&C::member)); template<typename C> static no& test(...); static const bool value = sizeof(test<T>(0)) == sizeof(yes); }; ``` 在这个模板中,`void`可能被用作默认类型或占位符来帮助编译器进行类型推导。 ### 7. 用于类型无关的操作 在某些情况下,`void`用于表示操作与具体类型无关。例如,在`memcpy`函数中,源和目标都是`void*`,这使得该函数能够处理任何类型的数据: ```cpp void* memcpy(void* dest, const void* src, size_t n); ``` 这个函数可以复制内存区域,无论这些内存区域包含什么类型的数据。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值