C语言学习笔记——(一)基本数据类型、字符串、指针入门

本文详细介绍了C语言中的基本数据类型,包括short、char、int、long、float和double,并展示了如何使用sizeof计算它们的字节数。接着,文章深入探讨了指针的概念,通过多个案例解释了指针的地址、值、定义、修改值以及如何通过指针在函数中交换变量值。最后,指出了通过普通函数交换变量值的常见错误及其原因。
摘要由CSDN通过智能技术生成

注:编码工具是CLion+Cygwin64

目录

基本数据类型

字符串:

sizeof:计算数组类型占用字节数

指针:

案例一:打印变量地址

案例二:*运算符,作用是取出内存地址的值

案例三:定义指针变量,指针存放的是内存地址

案例四:通过指针修改值

案例五:通过函数交换两个变量的值(错误示例)

案例六:使用指针通过函数交换两个变量的值


基本数据类型

#include <stdio.h>
// 基本数据类型
int main() {
    short s = 255;
    char c = 'A';
    int i = 1;
    long l = 13;
    float f = 3.0f;
    double d = 3.0;

    printf("s = %d\n", s);
    printf("c = %c\n", c);
    printf("i = %d\n", i);
    printf("l = %ld\n", l);
    printf("f = %f\n", f);
    printf("d = %lf\n", d);
    return 0;
}

输出:

s = 255
c = A
i = 1
l = 13
f = 3.000000
d = 3.000000

字符串:

#include <stdio.h>
// 字符串
int main() {
    char * str = "C string";
    printf("%s\n", str);
    return 0;
}

输出:

C string

sizeof:计算数据类型占用字节数

#include <stdio.h>
// sizeof
int main() {
    printf("char sizeof is %d\n", sizeof(char));
    printf("short sizeof is %d\n", sizeof(short));
    printf("int sizeof is %d\n", sizeof(int));
    printf("long sizeof is %d\n", sizeof(long));
    printf("float sizeof is %d\n", sizeof(float));
    printf("double sizeof is %d\n", sizeof(double));
    printf("char* sizeof is %d\n", sizeof(char));
    return 0;
}

输出:

char sizeof is 1
short sizeof is 2
int sizeof is 4
long sizeof is 8
float sizeof is 4
double sizeof is 8
char* sizeof is 1

指针:

C/C++(对象) 一切皆指针

Java 一切皆对象

Linux 一切皆文件

通俗理解:指针即地址,地址即指针

案例一:打印变量地址

#include <stdio.h>
// 案例一:打印变量地址
int main() {
    int num = 108;
    // &:取地址符,用于获取变量对应的地址
    printf("num addr is %p\n", &num);
    return 0;
}

输出:

num addr is 0xffffcc3c

案例二:*运算符,作用是取出内存地址的值

#include <stdio.h>
// 案例二:*运算符
int main() {
    int num = 108;
    // &:取地址符,用于获取变量对应的地址
    // *:取出内存地址中的值
    printf("num addr is %p, value is %d\n", &num, *(&num));
    return 0;
}

输出:

num addr is 0xffffcc3c, value is 108

案例三:定义指针变量,指针存放的是内存地址

#include <stdio.h>
// 案例三:定义指针变量
int main() {
    int num = 108;
    int *p = &num;
    printf("p value is %p, value in p value is %d\n", p, *p);
    return 0;
}

输出:

p value is 0xffffcc34, value in p value is 108

案例四:通过指针修改值

#include <stdio.h>
// 案例四:通过指针修改值
int main() {
    int num = 108;
    int *p = &num;
    printf("修改前的值为:%d\n", *p);
    *p *= 100;
    printf("修改后的值为:%d\n", *p);
    return 0;
}

输出:

修改前的值为:108
修改后的值为:10800

案例五:通过函数交换两个变量的值(错误示例)

注意:

1、 C语言不允许函数重载。

2、 函数声明或实现应该放在函数调用的上方。

#include <stdio.h>
// 案例五:通过函数交换两个变量的值(错误示例)
void swap();
int main() {

    int a = 1, b = 2;
    printf("\"交换\"前,a = %d, b = %d\n", a, b);
    swap(a, b);
    printf("\"交换\"后,a = %d, b = %d\n", a, b);


    return 0;
}

void swap(int a, int b){
    int tmp = a;
    a = b;
    b = tmp;
}

输出:

"交换"前,a = 1, b = 2
"交换"后,a = 1, b = 2

失败原因:swap中a和b的值是main函数中a和b的副本。

案例六:使用指针通过函数交换两个变量的值

#include <stdio.h>
// 案例六:使用指针通过函数交换两个变量的值
void swap(int * a, int * b) {
    int tmp = *a;
    *a = *b;
    *b = tmp;
}
int main() {
    int a = 1, b = 2;
    printf("交换前,a = %d, b = %d\n", a, b);
    swap(&a, &b);
    printf("交换后,a = %d, b = %d\n", a, b);
    return 0;
}

输出:

交换前,a = 1, b = 2
交换后,a = 2, b = 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值