C 返回数组?No!
其实早前的文章已经说过函数和数组和指针了,那么现在再来说一下归根结底还是又忘了的缘故,加上再给原来的多些扩展和补充,尽量达成互补的效果:C 几个程序,我们来聊聊数组,函数和指针
问题来源于今天三班一个学霸问我,他的程序没法运行,什么情况?
其实早前的文章已经说过函数和数组和指针了,那么现在再来说一下归根结底还是又忘了的缘故,加上再给原来的多些扩展和补充,尽量达成互补的效果:C 几个程序,我们来聊聊数组,函数和指针
问题来源于今天三班一个学霸问我,他的程序没法运行,什么情况?
转载:http://www.cnblogs.com/Wayou/p/things_you_dont_know_about_frontend.html
一些新鲜而我又不知道的知识,都挺好玩的,很有意思,所以在此mark一下。
这里不详细转载了,比如你可以试试在地址栏运行:
data:text/html, <html contenteditable>
Now you get it!
翻译自:How To Read C Declarations 原文
就算是非常有经验的C程序员,也对那些比简单数组/指针更复杂一些的声明感到头疼。比如说,下面这个是一个指针的数组,还是一个数组的指针?
int *a[10];
下面这货到底是什么?
int (*(*vtable)[])();
当然了,这货是一个指针,指向一个数组,这个数组的每个元素是一个指针,指向一个函数,函数的返回值类型是int :)
这篇短文希望能够教会你一个非常简单地读懂复杂声明的方法。我99%肯定我在80年代读过这篇,但是不记得具体是在什么地方读到的了。我怀疑是我自己发现这个的(尽管我总会被计算机语言结构和神秘的事物搞得很兴奋)。然而我的确记得,能够写出一个程序,将任何声明转换成英语。
题目如下:
一份计算机市场调查报告显示,市场上PC机的售价不同:6500,4990,5500,7200,6810,5700,5660,6900,5850,6250。编写程序,计算平均售价以及最大差价(最大差价=最高售价-最低售价)。
当然那题目给出的输入方式是不断空格的,那么难道因为这个我们就需要使用%d %d %d
直到10吗?实际上并不需要,直接输入就可以了,缓冲区这个概念应该还记得,当scanf()
读到空白字符(包括enter和space),剩下的并不是直接丢弃,而是存在缓冲区,而读取的时候从第一个非空白字符开始读取,所以,我们使用循环结构,一路用空格就行了,直到清空了缓冲区。
我们来看看这个程序的源码吧
#include <stdio.h>
#define NUM 10
int main(void)
{
int i;
float sales[NUM];
float sum = 0, max = 0, min = 0;
printf("Please input %d sales: \n", NUM);
for (i = 0; i < NUM; i++) {
scanf("%f", &sales[i]);
sum += sales[i];
if (i == 0) { /* min max 初始化 */
max = sales[i];
min = sales[i];
}
if (sales[i] > max)
max = sales[i];
if (sales[i] < min)
min = sales[i];
}
printf("ave = %f range = %g\n", sum / NUM, max - min);
return 0;
}
关于%g
这是一个很好的新东西,在C 转换说明符%g已有介绍
扩展阅读:C 一个程序说说scanf()判断
题目:
编写一个函数,返回一个double数组中最大的和最小的数之间的差值,并在一个简单的程序中测试这个函数。
对于题目无感,很容易,只是有一点疑惑,因为答案写的时候是
printf("The gap between max and min is: %g\n",gap( array, WIDTH));
感觉很神奇,%g
是什么?在我的笔记-说明符中并没有记录,然后翻到书上的章节里,也没有详细介绍,只是把它归类为解释成浮点型。
结果输出:
2.6
9.2
The dif between max and min is : 6.6
没有多余的0,看着很舒服。
今天偶然间发现水煮鱼中的PHP 中数组函数 isset 效率比 array_key_exists 更高是这么写的:
由于isset
属于php
中的语言结构,而array_key_exists
是函数,所以isset
更快。并且isset
在其他语言中也存在,更具可读性。
顿时很是疑惑——什么,isset
竟然不是函数?而至于处理效率isset
更快,倒变得不重要了(至少我一直使用isset
,几乎没有关注过array_key_exists
,具体可以见文章)
其实这个是困惑了我好久的问题,没想到在上机课做到的题里找到了答案——我的困惑是:#define
与const
到底有什么区别。
题目:
#define N 2
#define M N+1
#define NUM 2*M+1
int main(void)
{ int i;
for(i=1;i<=NUM;i++) printf(“%d\n”,i);
}
该程序中的for循环执行的次数是( )
A) 5 B) 6 C) 7 D) 8
答案是6,跑过以后怎么都不理解,这是因为忽略了#define
的重大不同。
个人用的方法,感觉还不错:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteBase /poster
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>
如果在根目录,那么把/poster
改成/
就行了,如果在http://xxx.xxx/aaa 则把/poster
改成/aaa
注:
第1行 第9行 判断rewrite模块是否加载,没有加载的话这几行代码不起作用
第2行设置Linux软连接
以上几行去掉无妨。
作为一个二货纠结了半天是不是apache的问题之后发现原来是自己用错了函数:
redirect('install');
这么用跳转失败了,而只要写一个
redirect('install', 'refresh');
就万事OK了,可能还是PHP版本的原因。
官方对于这个函数的传送门:http://codeigniter.org.cn/user_guide/helpers/url_helper.html
今天本想改一下bilibili的个人中心界面,然后因为懒,加上没有好的设计思路,就算了(其实主要还是前端技术不给力),本突然想到了图片透明度,找了一下竟然没有这篇的笔记,来mark一下。
img
{
opacity:0.4;
filter:alpha(opacity=40); /* 针对 IE8 以及更早的版本 */
}
其实只要这样就OK了,如果不针对IE甚至只要第一行,关键在于——啥,透明度的单词怎么拼,仅此而已。
关于这个还能变得更高端,在W3School里可以看到效果图,这里就当作拓展阅读给个传送门就行了:
http://www.w3school.com.cn/css/css_image_transparency.asp
如果要做出动画效果,可以考虑jQuery或者是CSS3