-
指针的数学运算:带类型
指针的本质 是 整数
整数的数学运算
1+1 == 2 1+8==9 4*4==16 4W*4W==16W
c#include<stdio.h> int main() { int* p = 16; printf("p:%d\n",p); // 16 printf("p+1:%d\n",p+1); // 20 return 0; }
注意 和 类型转换结合起来 会很麻烦 很有意思
-
字符串三种形式
- 字符串字面量
- 字符数组
- 字符指针 char* str;
c
#include<stdio.h>
int main()
{
char* p = "helloworld";
printf("%p\n", "helloworld");
printf("%p\n", p);
return 0;
}
字符串字面量的返回值是字符串的首地址也就是一个字符指针
%s: 从当前指针指向的第一个字符开始往后输出 直到遇到'\0'结束。
严格区分 定义数组时 数组名[元素个数]
访问数组名 数组名[下标]
数组名[下标] 是一种访问内存的方式
数组名[下标] 等同于 *(数组名 + 下标)
例如:
for (int i = 0; i < 16; i++)
printf("%c", p[i]);
printf("\n");
等同于
for (int i = 0; i < 16; i++)
printf("%c", *(p + i));
printf("\n");
字符串字面量是常量:返回值是 在内存中的地址 首地址 指针
字符数组 :另外开一块内存段 存 里面的每一个字符
字符指针: 另外开四字节内存段 存放字符串的 指针 首地址
指针变量 指向字符串
- 字符串常用函数
- strlen获取字符个数
- strcpy字符串拷贝
- strcmp比较
- strcat拼接
和 scanf一样 都被认为是不安全的 注意SDL
多字节字符集 char
unicode字符集 wchar_t