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";//常量字符串,不能对其中的字符进行更改
本文来自博客园,作者:struggle_time,转载请注明原文链接:https://www.cnblogs.com/songliquan/p/4426267.html