字符串,字符数组,类型转换,sizeof,size_t,整数越界,浮点数,枚举,局部变量不要返回地址,
目录
强制类型转换
数据类型
sizeof
数据类型所占字节数
整数越界
浮点数
字符型
字符串变量
编辑字符串的输入输出
main函数的参数 ,argc,argv
单个字符输入输出 putchar getchar
strlen,strcmp,strcat,strchr,strstr
strlen 求字符串长度
strcmp比较两个字符串
strcpy复制字符串
strchr字符串找字符
strstr字符串中找字符串
编辑 枚举
不要返回局部变量的地址
自动类型转换
强制类型转换
数据类型
sizeof
sizeof返回值类型是size_t,size_t是类型的别名,通过typedef定义的已知数据类型的别名
C 语言编程 — size_t 的意义与作用_51CTO博客_C语言 size_t
32位与64位 - 知乎
有符号无符号类型所占的内存(字节数)是一样的。
数据类型所占字节数
整数越界
浮点数
printf double可以写%f是因为有自动类型转换
字符型
字符串变量
字符串的输入输出
8个字节的数组,学数组的时候我们知道,传进去的是一个指针,不知道读入的内容的长度
下一次的scanf从多出来的字符开始读,比如输入12345678则8就是下一个scanf就把8读进去
main函数的参数 ,argc,argv
整数argc告诉后面argv字符数组到底有多少个字符串
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
int main(int argc, char const*argv[])
{
for (int i = 0; i < argc; i++) {
printf("%d:%s\n", i, argv[i]);
}
system("pause");
return 0;
}
单个字符输入输出 putchar getchar
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
int main(int argc, char const*argv[])
{
int ch;
while ((ch = getchar()) != EOF) {
putchar(ch);
}
printf("EOF\n");
system("pause");
return 0;
}
strlen,strcmp,strcat,strchr,strstr
strlen 求字符串长度
const表示这个函数不修改字符串
strcmp比较两个字符串
strcpy复制字符串
strchr字符串找字符
zhang_1099: 标题具有一定误导性
愈努力俞幸运: 这个在哪,我没看到,不是一个世界的怎么知道要去哪个世界找,由LEGB规则决定
愈努力俞幸运: 正确,python这个感觉就是c++的引用,参加 https://blog.csdn.net/qq_37891604/article/details/128210998 变量是对象内存地址的别名是想表达:C语言什么是变量?变量就是给一段内存空间取名字方便操作这段内存,所以说了变量是对象内存地址的别名。a就是0x1002的别名,a本身也是变量,也有 存起来,存放在0x1001这个地址处,这个地址上存放的内容是0x1002
Can同学: 另外补充一点。比如说,函数fun中的局部变量叫a,fun外的变量全局变量也叫a。之所以它们同名但不同引用,是因为全局变量存放在静态存储区,而局部变量存放在栈空间,说白了二者不是一个世界的 [/code]
Can同学: 第一张图片后面那一段话,有一句:“变量是对象内存地址的别名,即a代表了地址0x1002”,这句话我感觉作者是不是写错了。如果和其它编程语言一样(比如C语言),那么a应该是0x1001的代名词,只是在C语言中,0x1001存放20;而在Python中,0x1001存放0x1002、0x1002存放20。 不知道我的理解是否正确。