C语言其他知识总结

1、常指针与指针常量

诀窍:观察const修饰的是谁,那谁就不可更改。

  const int *p;//const 修饰*p,所以*p不能更改。通过指针不可更改指向的值

  int const *p;//同上

  int *const p;//const 修饰p,所以p不能更改。指针指向不可更改

  const int *const p;//const 修饰p,又修饰*p,所以p不能更改,*p不能更改。指针指向不可更改,通过指针不可更改指向的值

2、内存对齐

  参考我之前写得笔记。

  http://www.cnblogs.com/songliquan/p/4346931.html

3、参数传递方式

  值传递,地址传递

  值传递:不会改变原变量

    值传递过程中会生成新的变量,所以函数内部的操作对传入参数没有影响

  地址传递:会将在函数内部对变量的改变带出来。

    地址传递是将变量的内存地址传入函数,函数内部的操作是直接作用在变量上。

 void Exchg1(int x, int y)//传值
{
         int tmp;
         tmp = x;
         x = y;
         y = tmp;
}

 void Exchg1(int *x, int *y)//传地址
{
         int tmp;
         tmp = *x;
         *x = *y;
         *y = tmp;
}

  如果在main函数中对函数进行调用,结果

 1 int main() 
 2 {
 3             int a = 4;
 4             int b = 6;
 5             Exchg1(a, b);
 6             printf("a = %d, b = %d\n", a, b);//这里没有改变
 7             int c =10;
 8             int d =20;
 9             Exchg1(a, b);
10             printf("c = %d, d = %d\n", c, d);  //这里才是真正的交换
11             return 0;
12 }

3、函数指针和指针函数

  指针函数:普通函数,返回值比较特殊,是一个指针。

    int * Sum(int a);

  函数指针:指针变量,指向一个函数,只能指向一个形参列表一样的函数

    int (*p)(int a,int b);

    int Sum(int a,int b);

    p = ∑//赋值

    (*p)(10,20);//使用

4、字符串数字和常量字符串

  char name1[] = "wangwu";//字符串数组,可以任意修改字符串

  char *name2 = "zhangsan";//常量字符串,不能对其中的字符进行更改

 

转载于:https://www.cnblogs.com/songliquan/p/4426267.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值