摘要:
1,指针的基本用法1#include // 指针和数组都是复合类型, 他们从基本类型// 或者自定义类型派生.int main(void){ // 当定义指针变量p 时, int * --> 这里的 * // 不是运算符, 而是 类型定义说明符. // 定义了一个变量p // p 是 int * 类型. p 指向 int 类型. int *p = NULL; int a = 8; // 此时, p 指向 a p = &a; printf("sizeof p = %u\n", sizeof(p)); printf("&p = %p, ... 阅读全文
摘要:
1,格式控制符“%p”中的p是pointer(指针)的缩写。指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。printf函数族中对于%p一般以十六进制整数方式输出指针的值,附加前缀0x。2,这里的"c=%#x\n"意思是:是一个格式控制符,其中c=是普通字符,%#x是格式说明,\n是转义字符;其中的%#表示的输出提示方式,如果是8进制,在前面加0,如果是十进制,不加任何字符,如果是十六进制,会加上0x当执行:printf("c=%#o\n",c);输出的是:0101(把16进制41转化为2进制) 阅读全文
摘要:
int me;const int * p1=&me;//p1可变,*p1不可变,此时不能用*p1来修改,但是p1可以转向int * const p2=&me;//p2不可变,*p2可变,此时允许*p2来修改其值,但是p2不能转向。const int *const p3=&me;//p3不可变,*p3也不可变,此时既不能用*p3来修改其值,也不能转向 阅读全文
摘要:
1,字符加法#include #include void reverse(char s[]) //反向遍历{ int i; int len = strlen(s); for (i = 0; i len2 ? len1 : len2;//选取最大的作为循环长度 reverse(s1);//切换高位和地位的位置 reverse(s2);//切换高位和地位的位置 int i; int digit, carry;//digit是存储当前位数相加的值 for (i = 0, digit = 0; i int my_strlen(char s[]){ ... 阅读全文
摘要:
1,数组定义#include int main(void){ // 定义数组时需要确定: // 1. 数组元素的类型. // 2. 显式/隐式确定数组元素个数. int a[6] = { 12, 25, 36, 8, 45, 66 }; // 隐式确定数组元素个数 int b[] = { 3, 4, 5, 18, 23, 99}; // C99 // 在具有初始化式时, 数组中剩下的元素被初始化为 0 int c[] = { [0] = 36, [4] = 82 }; int i; for (i = 0; i int main(... 阅读全文