并非特意比较,也没有贵贱之嫌,对比着学和互相借鉴总之是有好处的吧我觉得
目录
1.命名空间
2.结构体
3.模板与泛型
4. 为类型取别名(创建同义词):typedef
5.只读变量
6.lambda表达式的应用
7.宏定义
8.字符表示
9.整型表达方式
10.整型溢出表达
11.字符数组表达
12.字符串表达
13.常量表达形式
14.const关键字的限制和分级作用
py有没有命名空间,如果没有,如何解决标识符冲突问题?c的命名空间一定要写吗?
c的结构体和py字典好像,那为什么py中不能用字典来代替对象使用?(问的有点蠢)
c中有模板(泛型编程的基础),Python中有吗,如果没有那有什么其他的方式达到这种代码复用的效果?java 中有吗?(有java什么事?)
“ template模板并没有我们想的那么高大上,就是说仅仅一个函数可以千变万化,其实并不是千变万化也并不是一个函数;
我们刚刚也看到了,模板的底层就是通过看你传入参数的类型,
给你分配一个适用你传入类型的函数,你传入int类型,他就给你一个适用int类型的函数,
你传入char他就给你一个适用char类型的函数;如果你连续传入int、char等n个类型进行排序,那么他的底层就会给你分配n个函数,并不是一个函数实现的类型自适应;
总结
1、我们使用模板的目的就是为了提高代码的复用性,减少重复代码的编写;
2、函数模板的底层并不是只有一个函数完成的,它是根据你传入参数的类型,给你分配一个适用你传入类型的函数;如果你连续传入n个类型,他就会给你分配n个函数;”
————————————————
版权声明:本文为CSDN博主「是星星鸭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_52572621/article/details/127872426
以下参考:https://blog.csdn.net/m0_65508678/article/details/126673369
typedef代码简化:
上面讨论的 typedef 行为有点像 #define 宏,用其实际类型替代同义字。
不同点是 typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文本替换。例如:
c中的typedef为现有类型创建一个新的名字,py中怎么实现这种功能?
typedef int size;
此声明定义了一个 int 的同义字,名字为 size。
注意 typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要 int 的上下文中使用 size:
void measure(size * psz); size array[4];size len = file.getlength();std::vector
c中的typedef还可以掩饰符合类型,如指针和数组?这块还没弄清除,后续补充
c中的typedef struct 结构名
{
类型 变量名;
类型 变量名;
...
} 结构别名; 能够在定义结构体的时候就直接指定一个别名,python在定义类的时候可以使用别名吗?
c中struct _hello{
int x,y;
} hello; //可以同时定义类和对象,python中可以吗?
c中const用来限定某类型变量为只读,在后续程序中不可更改其值,py中哪个关键字可以做到吗?如果没有关键字有什么方式达到目的?
py中有lambda函数,C有吗?怎么表示的?
py的匿名函数,一次性嵌入性的调用,不需要提供给其他地方调用它,也是一种闭包,同时也是一个函数对象,内部创建了一个重载()操作符的类
lambda x,y: x*y 参数是x,y,返回x*y的值
在map(lammda x: x*2,list) 返回一个每个元素乘以2之后的列表
c中的lambda可以参考:http://www.360doc.com/content/22/1025/00/78357527_1053155816.shtml
c中的lambda表达式如下示例,c11中新增好像?
[](){}():
[]:代表lambda的开始,
():第一个括号表示函数参数,若无参数将要传递,可以省略
{}:函数体,具体执行表达式的地方
():代表函数调用
c语言中的宏定义,py有常量的概念吗?
c 常量和宏定义参考:https://blog.csdn.net/m0_66005670/article/details/128010706
c中 宏表示一个符号常量,其表示一个字符串,宏处理是由预处理程序完成的,
#跨行宏定义:https://blog.csdn.net/qq_41854911/article/details/121196531
#定义一个交换数值的多行宏,使用反斜杠连接不同行
#define SWAP(a,b) do { \
int t = 0;\
t = a;\
a = b;\
b = t;\
} while(0)
#define B(n) 2*n
#define DL "\t"
int main{
printf("Line1%c", DL);
printf("%d\n", B(4+2));
}
#注销宏定义
#undef DL
c 语言中的单引号中只能有单个字符,多个字符需要双引号,py单引号可以放多个吗?
c语言中的单引号,特殊性在于只能有一个字符
py中的单引号和双引号一样使用,可以任意长字符串,使用格式化和正则的时候有些不同
c 语言中整型变量的分为无符号和有符号,py为什么没有分?
参考:
https://blog.csdn.net/zcx020307/article/details/126095836
https://blog.csdn.net/zcx020307/article/details/126095836
byte 字节 1 正负2^7
short : 短整型 2 正负2^15 unsigned short 2^16
int : 基本类型 4 正负2^31 unsigned int 2^32
long:长整型 4 正负2^31 unsigned long 2^32
longlong: 长长整型 8 正负2^63 unsigned long long 2^64
无符号整型比有符号整型在正整数上都要大一倍
#include
int main(){
int x,y,z;
unsigned int u;
x=1;
y=2;
u=3;
z=x+y+u;
printf("z=%d", z)
return 0;
}
c语言中整形数据的溢出,结果会发生反转,正负值变换,在py中会出现溢出吗?
a: 0111 1111 1111 1111 1111 1111 1111 1111 (共32位)
b: 1000 0000 0000 0000 0000 0000 0000 0000 (共32位)
以下参考学习:
https://blog.csdn.net/jx2091163852/article/details/126257326
https://wenku.baidu.com/view/31c724ea9a8fcc22bcd126fff705cc1755275fb4.html
c语言中的字符数组的赋值可以表示字符串,py中有字符数组形式吗?
char a[20] = "hello" // 存在于栈上,存取效率快
可以通过指针去访问和修改数组内容
char str[] = {'b','i','t','\0'};
字符数组表示字符串,需要追加'\0'作为截止符号
c语言中可以用指针表示字符串?py有指针吗?
char *a = "abcd";
//“abcd”存放于常量存储区,通常指针只可以访问字符串常量而不可以改变其值
赋值时在编译时就确定了,(因为是常量)
c语言的常量具有多种表示方法,py中有常量吗?如何表示?
参考:https://blog.csdn.net/qq_58325487/article/details/120812764
1.字面常量 2.34; "abc"; 2000;
2.常变量:const int num = 29; 语法层面限制变量不能直接改变,num变量
事实上C的const仅是语法上的限制
以下参考:https://www.cnblogs.com/xiaoxie001/p/16123161.html
用const来防止误操作
struct student{string name; int age;int score};
void printStudent(const student *stu){
// stu->age = 100; 操作失败
}
int main()
{
student stu = {"zhan"}
}
3.标识符常变量 #define MAX 123; 标识符一般大写,可以预定义短函数,以及特殊字符处理
4.枚举常变量 enum Sex {MALE,FEMAIL,SECRET}
c为什么已经存在#define 宏定义,还要const做常量限制?
参考:https://www.bbsmax.com/A/kjdwQZLwJN/
通常使用define定义一个宏,如#define PI 3.1415,以后无论在哪里需要使用圆周率时,我们直接使用PI即可,而在编译时预处理器会将所有的PI替换为,3.1415,这很方便,但是由于编译器不会对其进行检查,如果使用不慎就会引入错误,而且此种错误很难发现,而且,我们也无法得到PI的地址,不能向PI传递指针或引用为此,我们常使用const关键字修饰的宏变量来代替宏。使用const声明的变量虽然增加了分配空间,但是可以保证类型安全,并且可以得到指针。const消除了预处理器的值替代的不良影响,并且提供了良好的类型检查和安全型。
理解了const关键字,对我们的编程有很大帮助。它可以做到添加限制防止出现对特定变量的修改
参考:https://blog.csdn.net/qq_43205256/article/details/123125530
c语言中的size_t strnchr(const char *str)可以用来限制指针形参,以及提升形参权限,py有这种类似机制吗?