C语言基础

- 基本数据类型
int %d;
short %d;
long %l;
float %f;
double %lf;
char %c; //声明时用”单引号;声明数组时使用“”
#x 十六进制
#o 八进制
#s 字符串

- 计算所占字节数
sizeof (数据类型)

查找头文件的实现
vs 安装目录的VC\crt\src文件中查找

- 指针
定义:存储的变量的内存地址

int a = 10;
int *p = &a;//p为a在内存空间的地址

通过指针可以修改a的值

*p = 15;//此时a 的值变为15

c语言中通过指针传递改变变量的值

void change(int *a){ 
    *a = 15;
}

void main(){
    int a = 10;
    change(&a);
}

指针的运算

//实质是 p+(-)sizeof(数据类型)
char *p_c;//0x2345
int *p_i;//0x1234
p_c+=2//p_c = 0x2345+2*1
p_i--//p_i=0x1234 - 4


//输出数组
int a[] = {1,2,3,4};
/*
a , &a, &a[0] 三者的效果相同
a+i 等价于 &a[i];*(a+i) = a[i]
*/
int *p = a;
int i = 0;
int len = sizeof(a)/sizeof(int);
for(;i<len;i++){
    printf("%d\n",*p++);
}


空指针

int *p = NULL//默认值为0

多级指针

int a = 5;
int *p = &a;
int **l = &p;
**l = 9;
printf("%d\n",a);//输出9

函数指针

int add(int a,int b){
    return a+b;
}

int main(void) {
    int (*func_p)(int ,int );
    func_p = &add;
    int a = (*func_p)(1,4);
    printf("%d\n",a);
    return EXIT_SUCCESS;
}
int add(int a,int b){
    return a+b;
}

int divs(int a,int b){
    return a-b;
}

int change_s(int (*func_p)(int ,int ),int m,int n){
    return (*func_p)(m,n);
}

int main(void) {
    printf("%d\n",change_s(add,1,2));
    printf("%d\n",change_s(divs,7,9));
    return EXIT_SUCCESS;
}

二维数组及指针

int main(){
    int a[2][3] = {95,82,56,17,29,30};

    printf("%#x,%#x,%#x,%d\n",a,&a,*a,**a);
    printf("%d,%d,%d,%d\n", sizeof(*a), sizeof(*&a), sizeof(**a));
    //a是一个行指针,指向一个有三个元素的数组,12
    //&a是一个指向二维数组的指针,当前二维 数组6个元素,24
    //*a 是一个指向int类型数据的指针(a[0][0]),4
    printf("%d\n", **a);

    //a是一个行指针,是数组第一行的指针,a+1第二行的指针,以此类推
    printf("%#x,%#x\n",a,a+1);
    //*a是数组的第一行第一个元素的指针,*a+1是数组第一行第二个元素的指针
    printf("%#x,%#x\n",*a,*a+1);
    //*(a+1)是数组的第二(1)行第一(0)个元素的指针
    //注意:不一定是正常逻辑
    printf("%#x,%#x\n",*(a+1),*(a+1)+1);


    //取数组的第1(二)行,第2(三)个元素
    printf("%d\n",a[1][2]);
    printf("%d\n",*(*(a+1)+2));

    //总结:
    //a[i][j] 等价于 *(*(a+i)+j)
    //&a[i][j] 等价于 (*(a+i)+j)

    return EXIT_SUCCESS;
}

- 生成随机数

int a = rand()%100;
printf("%d\n",a);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值