break的作用:(1)在switch语句中,用于跳出switch选择结构
(2)在循环语句中,break用于跳出当前循环,执行该循环之后的语句(跳到该循环之后)
continue的作用:只用在循环语句中,满足条件的换跳到该循环之前,继续执行此循环
静态变量static在整个程序运行过程中只能被初始化1次;
关于函数传参中传地址的必要性,由于形参无法改变实参的值,所以出现exchange(int *x,int *y)之类的交换xy值的函数就很有必要。如下程序展示。小编推荐一个学C语言/C++的学习裙【 六二七,零一二,四六四 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
void exchange(int *x,int *y){
int temp;
temp=*x;
*x=*y;
*y=temp;
return;
}//返回值为空的
exchange(&a,&b);//main()函数中引用
函数返回一个指针变量
int *smaller(int *px,int *py){
return (*px<*py ? px:py);
}
int main(){
int a=5,b=10;
int *p;
p=smaller(&a, &b);
printf("min=%d\n",*p);
return 0
}//主函数中的调用
指向指针的指针(二级指针)指针本身也是个变量需要占一定的空间
int a;
int *p=&a;//一级指针p指向变量a
int **q=&p;//二级指针q指向变量p
int ***z=&q;//三级指针z指向变量q
z->q->p->a
所有的指针都是占用4个字节,32位,与声明指针类型无关
指针与数组
C语言的数组表示一段连续的内存空间,用来存储多个相同类型的值
数组名是首元素的地址,即数组名是首元素的“指针”
数组名是指针常量,即数组名的值不能改变,只能指向数组的首元素
int a[5]={1,2,3,4,5};
printf(“%p,%p,%p,%p,%p\n”,&a[0],&a[1],&a[2],&a[3],&a[4]);//相差4
printf(“%d\n”,&a[1]-&a[0]);//相差1(表示相差一个元素)
int a[5]={1,2,3,4,5};
printf(“%d\n”,*a); //*(a+i)<=>a[i]
字符串String
C语言中的字符串是由字符数组构成的并且以'\0'作为结束符。字符串用”” 双引号包围起来,
如”Helloworld”,在内存中应该是‘H’ ’e’ ‘l’ ‘l’ ‘o’ ‘w’ ‘o’ ‘r’ ‘l’ ‘d’ ‘\0’
字符数组与字符串的区别: 字符数组不需要以\0结束,但字符串必须以\0 结束。
字符串3种初始化方法
(1)char str[11] = {'G','o','o','d',' ‘,'D','a','y','!','\0'};以字符数组的形式,一个字符一个字符的初始化。
(2)char str[11] = "Good Day!”;用一个字符串来初始化一个字符数组。或者: char str[ ] = "Good Day!”;省略下标。
(3)char* pstr = "Good Day!”;把一个字符串赋给一个字符指针,则这个
指针指向字符串的首元素,且这样的字符串是一个字符串常量,即"Good Day!”存储在常量区,其内容不能被修改,等价于const char* pstr = "Good Day!”;
char * str2="Good day";
printf("%s\n",str2);//初始化3