数组:
- 声明并初始化赋值:
int array1[5] = {1,2,3,4,5}; //一维数组,默认5个元素。
int array11[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; //二维数组,3行4列。
char array2[5] = {'L','O','V','E','U'}; //字符赋值。
char array3[] = "LOVEU"; //字符串赋值。
- 赋值:
int array1[5] = {1,2,3,4,5}; //法一:初始化时就赋值。
array1[4] = 4; //法二:以后单独赋值。
- PS:
1 .初始化赋值的时候可先赋值一部分,剩余的部分是\0即结束符。
int array1[5] = {1,2};
2 .声明数组可以先不说明多少元素:
int array1[] = {1,2,3,4,5}; //那么就是5个元素,数组长度为5.
3 .问:字符串数组和字符数组区别:
答:大致相同,但是字符串数组最后一个元素存\0 结束符,
使用sizeof()计算长度发现字符串长度比字符长度多一个。
指针:
变量、数组、函数等都是存在于计算机内存中。内存中存放的位置就叫做地址。地址由一系列编号组成,所以又称为指针。
1.指针变量。用*
int *p1; //指向整型变量的指针变量p1.
float *p2;
char *p3;
2.取地址运算符,&
int a=88; //初始化变量a为88。
int *p; //定义一个指针变量。
p = &a; //取得变量a所存放的地址,并且赋值给指针变量p1.
printf("%d\n",*p); //p代表地址,*p代表这个地址中存放的内容。
3.野指针和NULL.
初始化的指针如果没有指向的话就是野指针,很危险,可以先赋值为NULL。
4.分配内存的函数。
p = (int *)malloc(99); //指针变量p,指向的变量类型为int,分配了99个内存空间。
free(p); //使用后释放内存空间。
5.数组的指针:
int a[5] = {1,2,3,4,5};
int *p;
p = &a[0]; //p指向数组的首地址。
p= a; //等同上面,p指向数组的首地址。
6.字符串的指针:
char *ps = "love"; //ps指向字符串的首地址。
printf("%s \n",ps); //"love"
printf("%c \n",*ps); //"l"
printf("%c \n",*(ps+1)); //"o"
7.指针用途,节约内存空间。
char *pc[3] = {
"love",
"loveu",
"loveuu"
};
for (int i=0; i<3; i++) {
printf("%s \n", pc[i]); //逐行打印。
}
return 0;
函数
//函数要先声明,然后定义,然后就可以使用了。(递归函数见下)。
#include <stdio.h>
int sum(int); //函数先声明。
int main(){
int n = 100, s = 0;
s = sum(n);
printf("%d\n", s);
}
int sum(int n){
if (n == 1) {
return 1;
}else{
return n+sum(n-1);
}
}
变量
static静态变量,
static int a = 6;
,主要作用于局部变量,用于延长局部变量的生命周期。
extern,主要用于全局变量和函数。用于变量提升。
#include <stdio.h>
int main(void){
extern int a; //没有这句的话就会显示“无法使用未声明的变量。”
printf("%d \n",a);
}
int a = 11;
参数
指针做参数:
#include <stdio.h>
void swap(int *p, int *q);
int main(){
int a=100,b=200,*p1=&a,*p2=&b;
printf("main调用swap之前*p1:%d, p2:%d.\n",*p1,*p2);
swap(&a, &b);
printf("main调用swap之后*p1:%d, p2:%d.\n",*p1,*p2);
return 0;
}
void swap(int *p, int *q){
int temp;
temp = *p;
*p = *q;
*q = temp;
printf("在swap函数中置换后*p:%d, q:%d.\n",*p,*q);
}
#运行结果#:
main调用swap之前*p1:100, p2:200.
在swap函数中置换后*p:200, q:100.
main调用swap之后*p1:200, p2:100.
Program ended with exit code: 0
指针函数
#include <stdio.h>
char *substring(char s[], int, int);
int main(){
char string[] = "I Love U";
char *ps = NULL;
ps = substring(string, 2, 7);
printf("%s\n",ps);
return 0;
}
char *substring(char s[], int i, int j){
static char temp[100];
int m,n;
for (m=0, n=i; n<=j; m++,n++) {
temp[m] = s[n];
}
temp[m] = '\0';
return temp;
}
##运行结果:
Love U
Program ended with exit code: 0
结构体:
基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过一定方法访问修改内部变量。
网友评论