1.排序
%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95
2.链表
%E9%93%BE%E8%A1%A8
3.指针与数组名
数组与指针同为两种数据类型,说“数组名就是指针”是错误的。这不是在钻牛角尖,而涉及到自己的理解。
数据类型的本质功能是按照一定的形式分配出一定的空间,方便我们使用。至于如何使用空间,就是逻辑问题了。
#include
void fun(int b[100])
{
printf("sizeof(b) = %d\n",sizeof(b));
}
int main()
{
int *p = NULL;
int a[100];
//a+=1; //test.c:12:3: 错误: 双目运算符 + 操作数(‘int[100]’和‘int’)无效
//a++; //test.c:13:3: 错误: 自增操作数必须是左值
printf("sizeof(a) = %d\n",sizeof(a));
printf("sizeof(a[100]) = %d\n",sizeof(a[100]));
printf("sizeof(&a) = %d\n",sizeof(&a));
printf("sizeof(a[0]) = %d\n",sizeof(a[0]));
printf("sizeof(p) = %d\n",sizeof(p));
printf("sizeof(*p) = %d\n",sizeof(*p));
fun(a);
}
输出为:
sizeof(a) = 400
sizeof(a[100]) = 4
sizeof(&a) = 8
sizeof(a[0]) = 4
sizeof(p) = 8
sizeof(*p) = 4
sizeof(b) = 8
我的是64位系统,很说明问题。
有疑惑的地方是:把数组当作型参时,又像是指针。
其实 函数参数的传递仅仅是值的传递,数组名当指针 是出于效率考虑的一种规定而已。
在函数中使用的仅仅是其值,即数组名的 又即地址,函数如何使用它,就和数组名无关了。
char 有unsigned 和signed之分。之前还真没注意过。
switch case 后面跟整型 or 字符串 or 字符常量。反正内存里都是“整型”
/*88*/编译器把注释当成空格
阅读(1318) | 评论(0) | 转发(0) |