C语言知识

来源:互联网 发布:mac 照片 文件夹 编辑:程序博客网 时间:2024/06/05 11:20

break的作用:(1)在switch语句中,用于跳出switch选择结构

                       2)在循环语句中,break用于跳出当前循环,执行该循环之后的语句(跳到该循环之后)

continue的作用:只用在循环语句中,满足条件的换跳到该循环之前,继续执行此循环


静态变量static在整个程序运行过程中只能被初始化1;


关于函数传参中传地址的必要性,由于形参无法改变实参的值,所以出现exchangeint *x,int *y)之类的交换xy值的函数就很有必要。如下程序展示。

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'};以字符数组的形式,一个字符一个字符的初始化。 

2char str[11] = "Good Day!”;用一个字符串来初始化一个字符数组。或者: char str[ ] = "Good Day!”;省略下标。 

3char* pstr = "Good Day!”;把一个字符串赋给一个字符指针,则这个 

指针指向字符串的首元素,且这样的字符串是一个字符串常量,"Good Day!”存储在常量区,其内容不能被修改,等价于const char* pstr = "Good Day!”; 

char * str2="Good day";

printf("%s\n",str2);//初始化3

0 0