C专家编程学习笔记(3)
第8章:再论数组
1.什么时候数组和指针是相同的
C语言标注对此作了如下说明:
规则1: 表达式中的数组名(与声明不同)被编译器当作一个指向该数组第一个元素的指针.
int a[10], *p, i=2;
可以通过以下任何一种方法访问a[i];
p = a; p[i];
p = a; *(p+a);
p = a + i; *p
在表达式中,指针和数组是可以互换的,因为它们在编译器里的最终形式都是指针,并且都可以进行取下标操作.
规则2: 下标总是与指针的偏移量相同.
规则3: 在函数参数的声明中,数组名被编译器当作指向该数组第一个元素的指针.
在函数形参定义这个特殊情况下,编译器必须把数组形式改写成指向数组第一个元素的指针形式.编译器只向函数传递数组的地址,而不是整个数组的拷贝.因此在my_function()的调用上,无论实参是数组还是真的指针都是合法的.
my_function(int *turnip) { ... }
my_function(int turnip[]) { ... }
my_function(int turnip[200]) { ... }
相关文档:
#include
void printptr(int *i){
printf("&i of printfptr = %#X\n",&i);
printf("i of printfptr = %#X\n",i);
printf("*i of printfptr = %d\n",*i);
printf("i+1 of printfptr = %#X\n",i+1);
printf("*(i + 1) of printfptr = %d\n",*(i ......
/////////////////////////////////////////////////
// 主题:一段用来判断日期是星期几的代码
// 描述:摘自《CCFAQ》
// 作者:天之枫
// 时间:2010-02-13
/////////////////////////////////////////////////
#include <stdio.h>
int dayofweek(int y, int m, int d) // 判断输入的日期是星期几
......
对于C编写程序,大部分都可以通过,但是不会完全兼容,举两个例子:
1.
char *str;
str = malloc(32);
2.
char ch[3] = "abc";
gcc -g -o test test.c
g++ -g -o test test.c
因为C++检查更加严格,C没有这么严格。
大家可以比较一下,gcc不会报错,g++会报错。
如果大家还有新的case,欢迎 ......
今天配置了一下netbeans的c++编译环境,所以写一篇日志备忘,同时也供广大网友参考和学习。
准备资源:
1、netbeans 可以到官方网站下载zh-cn.netbeans.org/
2、MinGW编译器(MinGW中有g++和gcc编译器)点此处下载,可以到我提供的csdn的共享下载,由于大小限制分两部分
地址:第一部分 http://download.csdn.net/sour ......
1.传统上,C语言要求必须在一个代码块的开始处声明变量,在这之前不允许任何其他语句。现在C99遵循C++的惯例,允许把声明放在代码块中的任何位置。然而,在首次使用变量之前仍然必须先声明它。
2.操作系统和C库通常使用以一个或两个下划线开始的名字,因些你自己最好避免这种用法。
3.C语言的名字是区分大小写的。 ......