摘要:
用指针遍历字符串的所有字符: 1 // 定义一个指针p 2 char *p; 3 4 // 定义一个数组s存放字符串 5 char s[] = "mj"; 6 7 // 指针p指向字符串的首字符'm' 8 p = s; // 或者 p = &s[0]; 9 10 for (; *p != '\0'; p++) { 11 printf("%c \n", *p); 12 } 用指针直接指向字符串: 1 #include 2 3 int main() 4 { ... 阅读全文
摘要:
char类型的变量要占用1字节,所以p+1代表p的值加1;float类型的变量占用4字节,所以p+1代表p的值加4。 从这一点,也可以很好地说明为什么指针一定要分类型,不同类型的指针,p+1的含义是不一样的。 1 // 定义一个int类型的数组 2 int a[4] = {1, 2, 3, 4}; 3 4 // 定义一个int类型的指针,并指向数组的第0个元素 5 int *p = a; 6 7 int i; 8 for (i = 0; i < 4; i++) { 9 // 利用指针运算符*取出数组元素的值 10 int value = *(p+i); /... 阅读全文
摘要:
指针:用来存放变量地址的变量,就称为"指针变量"。 "直接引用"是直接通过变量名来读写变量。 "间接引用"首先将变量a的地址存放在另一个变量中,比如存放在变量b中,然后通过变量b来间接引用变量a,间接读写变量a的值。 1 // 定义int类型的变量a 2 int a = 10; 3 4 // 定义一个指针变量p 5 int *p; 6 7 // 将变量a的地址赋值给指针变量p,所以指针变量p指向变量a 8 p = &a; // 定义一个指针变量p // 并将变量a的地址赋值给指针变量p,所以指针变量p指向变量a int *p 阅读全文
摘要:
char a[3] = {'m','j','\0'}; char a[3] = "mj"; //系统会自动在字符串尾部加上一个"\0"结束符。: putchar:字符输出函数 putchar(65); //A putchar('A'); //A int a = 65; putchar(a); //A putchar一次只能输出一个字符,而printf可以同时输出多个字符。 getchar:字符输入函数 char c; ... 阅读全文
摘要:
变量存储单元的第一个字节的地址就是该变量的地址。 数组名代表着整个数组的地址,也就是数组的起始地址,也是数组第一个元素的地址。 C语言中,编译器是不会对数组下表越界进行检查的,所以自己访问数组元素时要小心。 void test(int b[]) { b[0] = 9; } int main() { int a[3]; a[0] = 10; printf("函数调用前的a[0]:%d\n",a[0]); test(a); printf("函数调用后的a[0]:%d\n",a[0]); return 0; } //... 阅读全文
摘要:
逗号运算符和逗号表达式:整个逗号表达式的值是最后一个表达式的值。 int a = 2; int b = 0; int c; int d; c = (++a,a *= 2,b = a * 5); printf("c = %d",c); //输出:c = 30 d = ++a,a *= 2,b = a * 5; printf("d = %d",d); //输出:d = 3 sizeof:可以用来计算一个变量或者一个常量... 阅读全文
摘要:
基本数据类型: 整型(int)、浮点型(单精度浮点型(float)、双精度浮点型(double))、字符型(char) 指针类型: void * 构造类型: 数组、结构体(strtuct)、共用体(union)、枚举(enum) 空类型: void类型修饰符: short 短型 取值范围:-32768 ~ 32767 long 长型 取值范围:-2147483648 ~ 2147483647 signed 有符号型 unsigned 无符号型以下写法都是正确的: short int s1 = 1; ... 阅读全文