C语言与Python基础语法对照表(扩展版)

本文全面对照了C语言和Python的基础语法,侧重于帮助有C语言基础的读者掌握Python与C语言的核心差异。

语法类别C语言实现Python实现核心差异解析

变量定义

整型变量
int num=10;
num=10

Python无需声明类型,变量本质是对象引用

浮点数
float pi=3.14
pi=3.14

Python默认使用双精度浮点(即C语言里的double)

字符变量
char c='A';
c='A'

Python没有单独的字符类型,本质是长度为1的字符串

常亮定义
#define MAX 100 const int MAX=100;
MAX=100
(约定全大写表示常量

Python没有真正的常量,可通过命名约定或模块限制

输入输出

控制台输出
printf("num=%d,pi=%.2f",num,pi);
printf(f"num={num},pi={pi:.2f}")

Python使用f-spring格式化(3.6+)

控制台输入
int x;
scanf("%d",&x);
x=int(input("请输入整数:"))

Python输入返回字符串,需显示类型转换

控制结构

条件判断
if(x>10)
{
//code1
}
     else if(...)
{
//code2
}
    else
{
//code3
}
if x>10:#code1  
elif ...:#code2

else:#code3

Python使用冒号和缩进替代大括号

for循环
for(i=0;i<10;i++){...}
for i in range(10):
...

range(10)生成迭代器,类似C的计数器

while循环
while(x>0){...}
while x>0:...

语法结构类似,但是条件表达式无需括号,用冒号替代

函数

函数定义
int add(int a,int b)
{
    return a+b;
}
def add(a,b):
return a+b;

Python支持默认参数、可变参数等高级特性

函数调用
int result=add(3,5);
result=add(3,5)

Python参数传递为对象引用(类似指针)

函数指针
int func_ptr(int,int)=&add;
func_ptr(2,3);
func_ptr=add
func_ptr(2,3)

Python函数为“一等公民”,可直接传递

数据结构

数组
int arr[5]={1,2,3,4,5};
arr=[1,2,3,4,5]

Python列表可动态扩展,支持混合类型

结构体
struct Point{
int x;
int y;
};
class Point:
def init_(self,x,y):
self.x=x
self.y=y

Python使用类替代结构体

枚举
enum Color{RED,BLUE,GREEN};
from enum import Enum
class Color(Enum):
RED=1
BLUE=2
GREEN=3

Python需显式定义枚举值

字符串操作
char str[20];
strcpy(str,"hello");
strcat(str,"world");
str="hello"
str+="world"

Python字符串不可变,操作生成新对象

内存管理

动态内存分配
int *arr=(int*)malloc(5*sizeof(int));
free(arr);
arr=[0]*5 
   del arr #仅减少引用计数

Python通过引用计数和垃圾回收自动管理内存

指针操作
int *p=&x;
*p=10;

Python无显式指针,但对象引用机制类似指针

所有变量本质都是对象引用(类似void*指针)

类型系统

类型转换
int x=(int)3.14;
x=(int)3,14

Python通过构造函数显式转换

类型检查编译时静态检查运行时动态检查

Python变量类型在运行时确定

异常处理

if(ptr==NULL){//错误处理}
try:
# 可能出错的代码
except Exception as e:
# 异常处理

Python提供结构化异常处理机制

文件读写

FILE *fp = fopen("file.txt", "r");
fscanf(fp, "%s", buffer);
fclose(fp);
with open("file.txt", "r") as fp:
content = fp.read()

Python使用上下文管理器自动处理资源

其他特性

注释// 单行注释
/* 多行注释 */
# 单行注释
""" 多行注释 """

Python没有专门的多行注释语法,但可用多行字符串替代

代码块使用大括号{}界定使用冒号:和缩进(4空格)

宏定义
#define SQUARE(x) ((x)*(x))
无直接等价,可用函数替代:
def square(x): return x*x
Python通过函数实现类似功能

 

扩展说明

1. 动态类型 vs 静态类型
  • C语言:变量类型在编译时确定,不可更改

    int x = 10;    // x始终是int类型
    x = "hello";   // 编译错误
  • Python:变量类型在运行时动态确定

    x = 10       # x是int类型
    x = "hello"  # 合法,x变为str类型
2. 内存管理对比
操作C语言Python
内存分配显式调用malloc/calloc自动分配(a = [1,2,3]
内存释放必须显式调用free垃圾回收自动处理(引用计数 + 分代回收)
内存泄漏风险高风险(忘记释放)低风险(但仍可能因循环引用导致)
3. 函数参数传递
  • C语言:严格的值传递(可通过指针实现引用传递)

    void swap(int *a, int *b) {
        int temp = *a;
        *a = *b;
        *b = temp;
    }
  • Python:对象引用传递(类似指针传递)

    def swap(a, b):
        return b, a  # 通过返回新对象实现交换
    
    x, y = 10, 20
    x, y = swap(x, y)

总结建议

  1. 理解对象模型:Python变量本质是对象引用(类似C的指针)

  2. 掌握动态特性:利用Python的动态类型简化代码

  3. 善用自动管理:无需手动内存管理,专注业务逻辑

  4. 对比学习调试:使用id()函数观察对象地址(类似C的指针值)

通过此扩展对照表,C语言开发者可以快速建立Python语法框架。实际编码时,建议结合Python交互式环境(如Jupyter Notebook)实时验证语法特性。

以上就是本期的全部内容,如有帮助,不妨点赞收藏支持一下💗。更多优质内容请关注本账号,我们下期再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值