c语言-难点总结

break的作用:

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

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void exchange(int \*x,int \*y){

    int temp;

    temp=*x;

    \*x=\*y;

    *y=temp;

    return;

}//返回值为空的

exchange(&a,&b);//main()函数中引用

函数返回一个指针变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
**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

}//主函数中的调用

指向指针的指针(二级指针)指针本身也是个变量需要占一定的空间

1
2
3
4
5
6
7
8
9
int a;

int *p=&a;//一级指针p指向变量a

int **q=&p;//二级指针q指向变量p

int ***z=&q;//三级指针z指向变量q

z->q->p->a

所有的指针都是占用4个字节,32位,与声明指针类型无关

指针与数组

C语言的数组表示一段连续的内存空间,用来存储多个相同类型的值

数组名是首元素的地址,即数组名是首元素的“指针”

数组名是指针常量,即数组名的值不能改变,只能指向数组的首元素

1
2
3
4
5
6
7
8
9
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
(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!” 存储在常量区,其内容不能被修改,等价于

1
2
3
4
5
const char* pstr = "Good Day!”;

char * str2="Good day";

printf("%s\\n",str2);//初始化3
  • 版权声明: 本博客所有文章,未经许可,任何单位及个人不得做营利性使用!转载请标明出处!如有侵权请联系作者。
  • Copyrights © 2015-2020 翟天野

请我喝杯咖啡吧~