C语言总结(一)

来源:互联网 发布:oracle sql连接字符串 编辑:程序博客网 时间:2024/05/17 04:36
                                                                   第一部分总结


dev C++下载地址:http://sourceforge.net/projects/orwelldevcpp/?source=directory。

在程序中平白无故的加一个大括号{ }往往是为了调试。

不可能通过执行调用函数来改变实参指针变量的值,但是可以改变实参指针变量所指变量的值。例如swap函数需要传指针而不是传值。


C语言中,数组名代表数组中首元素的地址。


数组变量本身不能被赋值;要把一个数组的所有元素交给另一个数组,必须采用遍历。


引用一个数组元素,可以用两种方法:
(1)下标法,如a[]形式;
(2)指针法,如*(a+i)或*(p+i)。其中a是数组名,p是指向数组元素的指针变量,其初值p=a。

实际上,在编译时,对数组元素a[i]就是按*(a+i)处理的,即按数组元素首元素的地址加上相对位移量得到要找的元素的地址,然后找出该单元的内容。
可以看出,[]实际上是变址运算符。

今天下午用了一下午找出了一个毛病:在Dev C++5.1.1中使用scanf输入多个值得时候,格式为scanf("%d" "%d" "%d",&a,&b,&c),或者scanf("%d %d %d",&a,&b,&c)而不是教材上写的scanf("%d,%d,%d",&a,&b,&c)。如果中间使用逗号分隔会导致输入的值a、b、c中只有a的值准确,b、c的值都不准确。

在使用scanf读入字符串的时候,为了保证字符串不被溢出,可以使用在%后加个数字,比如scanf("%7s",word);的方式读入。

sizeof是一个静态运算符,他的结果在编译时刻就决定了;不要在sizeof的括号里做运算,这些运算不会做。

不论指向什么类型,所有的指针的大小都是一样的,因为都是地址;
但是指向不同类型的指针是不能直接互相赋值的,这是为了避免用错指针。


malloc语法:
头文件           #include<stdlib.h>
              
                      int *a=(int*)malloc(n*sizeof(int));
           (malloc初始的指针类型是void类型,malloc后面括号内的数为字节数,而不是int数)

                                                  

                                                          (未完待续。。。)


























































































0 0
原创粉丝点击