欢迎访问个人博客http://www.jkraise.top
字符串
// 字符串, 只用字符数组 来存
int a[100] = {"hello world"};
printf("int a = %s", a); 字符串输出用%s
// 用字符串函数
//puts(" 打印字符串")
// gets("从键盘获取字符串") 能获取空格, 但有字符限制
// strcat(old, new); 连接字符串 new 连接到 old
// compare 比较
// strcmp(old, new); 比较字符串的值
// 返回值 为0 即相等
// 返回值 非0 即不相等
// strcpy(old, new) 拷贝 把原来的字符串进行覆盖,
new 的字符串给 old 字符串
指针
// 定义指针变量
int *a; // *的 作用是 表示 p 是个指针变量
// 初始化
int b=20;
int *p =&b; // 获取b的内存地址
printf("%d /n", *p) // *的 作用是 表示 取去指向变量的值
//指针没有初始化里面是一个垃圾值,这时候我们这是一个野指针,如 果操作一个野指针.
//1)可能会导致程序崩溃
//2)访问不该访问数据 所以指针必须初始化才可以访问其所指向存储 区域
// 指向数组元素的指针
int num[4]=[1,2,3,4]
int *a = &num[0]
int *b = a // &a[0] 数组的名字就是 数组元素 第零个的地址
//
int *c = a[3]
printf('%ld/n', c -b) // 元素之差
// 两个指针相减, 如p1-p2 (只有p1和p2都指向同一数组中的元素时才有意义)
指针指向同一个数组, 可以进行相减
字符串指针
char name[]= {"hello world"};
char *p={"hello world"}
// 程序分为五个大区
// 堆区
// 栈区
// 常量区 不允许修改
// 全局静态区
// 代码区 不允许修改
// 字符串的结尾 \0
二级指针
int **p=Null;
向程序申请一块内存
char *p=Null;
// 使用malloc函数 向系统申请一块可用的空间, 100 表示申请的字节数
p = (char *)malloc(100);
// 从键盘获取数据, 存入p指向的内存空间中
sanf("%s", p);
// 输出
printf("p = %s\n", p);
return 0;
指针数组
int *num[4];// 指针数组
int age[4];
int *temp[4];
// 存放 指针数组元素
temp[0] = age[0];
temp[1] = age[1];
temp[2] = age[2];
temp[3] = age[3];
复习
- 字符串
1. "hello world"---->字符串 常量
2. char num[];// 字符数组
char num[]={"hello world"};// 大小应该为:12Byte (bit)
char num[]="hello world";
char num[]={'a','b','c','d','e'};// 大小应该为:5Byte
for(int i=0;i<5;i++){
printf("%c", num[i]);
}
printf("%s", num);
puts(num);
scanf("%s", num);
gets(num);
3. #include<string.h>
strcmp();//比较是否相等
strcat();// 连接
strcpy();// 拷贝
strlen();// 计算实际的长度(不包括) char num[]={'a','b','\0','d','e','\0'};
#include<stdlib.h>
- 指针
1. 地址就是指针 (pointer)
int a=100;
a;
&a;// printf("%p"); 16进制打印
2. int *p;
int num;
char num2;
p = #
*p = 100;
3. void test(int num){
num+=100;
}
void test2(int *p){
*p = *p + 100;
}
int num=0;
int *p2=NULL;