一.基础
- 定义基本数据类型变量时,
如果是全局的int类型变量,系统会默认赋值为0.
如果是局部的int类型变量, 打印值为系统随机给的垃圾数据
- 数组名代表着数组的首地址
- C语言中使用数组来表示字符串,例如char str[] = 'yk';char str[3] = {'y', 'k', '\0'};
如果类似第一种写法,是连续的表示,系统默认会在字符串的末尾加一个'\0'
结束符
- char a[] = "lyk" a是一个字符串变量,可以修改
char *a = "lyk" a是一个字符串常量,不可修改
- 函数指针,指针指向函数
指针函数,函数返回指针
int sum(int a, int b)
{
return a+b;
}
int main(int argc, const char * argv[]) {
//定义一个函数指针, 指针指向函数 sum
int (*p)(int, int) = sum;
//调用函数指针,其实就是调用 指针指向的函数 sum
int ret = (*p)(1, 2);
//int ret = p(1, 2) 也可以的
printf("%d\n", ret);
}
- 指向结构体的指针访问结构体变量
1: 结构体变量名.成员名
2: (*指针变量名).成员名
3: 指针变量名->成员名
- const的使用
const只修饰const 右边的值.
const int *p0 = &a;
*p0不能被修改:不能修改p0所指向的内容,
但p0的指向可以修改:p0的指向可以被修改
int *const p0 = &a;
p0不能被修改:p0的指向不可以被修改,
*p0可以被修改:p0指向的内容可以被修改
int a = 0
const int *p0 = &a; //被const修饰,*p0变成常量不能被修改,p0可以被修改
int const *p1 = &a; //*p1不能被修改,p1可以被修改
int * const p2 = &a; //p2不能被修改, *p2可以被修改
const int * const p3 = &a; //p3和*p3都不能被修改(左边const修饰*p3,右边修饰p3)
int const * cosnt p4 = &a; //p4和*p4都不能被修改,都变成了常量
网友评论