C语言小总-----字符串 &一丢丢void指针

8 篇文章 0 订阅

定义字符串的两种形式 :

char str1[20] = {"helloworld"};
char *sp = "helloworld";

两者区别:
str1 是数组 在栈上开辟20个空间 前面存放helloworld 后面放0 其内容可以被改变
*sp指针存放在栈上 其指向的字符串在数据区 只读特性

char str[30];//定义一个数组=>缓冲区
scanf("%s",str);
printf("%s \n",str);

gets(str);//返回的是输入的字符串是指针
//gets 做到了与字符串类型的无缝连接
int len = strlen(gets(str));//
strcopy(str,gets(str));//
str = gets(str);//不可以编译通过 因str是字符串首元素的地址
char *p = gets(str);
puts(str);

scanf 函数 以回车作为输入结束 但字符串以空格作为结束
gets 函数 以回车作为输入结束 字符串也以回车作为结束

字符串遇 ‘\0’ 就结束
缓冲区=>连续的空间

就绪态 (得不到CPU)–>运行态(未获得资源)–>IO阻碍态(得到资源后)–>就绪态
就绪态 -->运行态–>睡眠态–>就绪态

结束态(执行完毕)[任何一个进程都可以到达结束态]

时间片到达之后又回到了就绪态 防止同一个进程 一直霸占CPU

程序并发执行 <== 进程的交替执行 (微观)[由操作系统内核完成切换动作]切换速度与硬件有关 进程同时执行(宏观)

char识别低位 :
char ch = '23'; //0x3233 char 取低位识别==>ch = '3'
char ch = '\23'; // 023==>19 \255 (最大值) 超过255则在某些编译器上会报错
转义 ’ \ ’ 只能转换一个字节 8比特
转义麻烦:
(1)转化成控制意义// \t \n
(2)转化成自身意义// ' " /
int a = "\1\2\3\4\5\6\7"[2] // 3

无类型void 不可以定义变量 也不可以参与任何运算

函数形参 可以定义为 指针 引用 或变量

assert(p!=NULL&&s!=NULL)
//不返回任何类型 断言对其返回值强转为无类型 不可以相互赋值 不可以进行与或非运算

无类型指针(泛型指针)不可以解引用 // printf("%d \n" , sizeof(*p));

但是可以指向任意类型的地址

void *p = NULL; 
p = &int;
P = &float;
p = &p;//也可以指向自己

void 指针不可以自加一 : 无类型不知道自己是几字节
void指针 如果要赋给其他类型 必须要强转

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值