C语言基础入门详解二

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。
点击跳转到教程

一、C语言多级指针入门

#include
#include

/**
	多级指针 
	指针指向的就是内存地址
	地址就是指针 
*/ 
main(){
	//定义一个int类型的变量i,并且赋值为100; 
	int i = 100;
	//定义一个int类型的一级指针变量address1,并且把i的地址赋值给它 
	int* address1 = &i;
	//定义一个int类型的二级指针变量address2,并且把address1对应的地址赋值给它 
	int** address2 = &address1;
	//定义三级指针 
	int*** address3 = &address2;
	//定义四级指针
	int**** address4 = &address3;
	
	//多级指针取值 ****address4得到的值是100
	printf("****address4==%d\n",****address4); 
	****address4 = 2000;
	printf("****address4==%d\n",****address4); 
	
	printf("***address3==%d\n",***address3); 
	****address4 = 2000;
	printf("***address3==%d\n",***address3); 
	printf("i==%d\n",i); 
	system("pause");
}

输出到控制台内容如下:
C语言基础入门详解二_第1张图片
对应的内存分析图如下:
C语言基础入门详解二_第2张图片
二、C语言中数组的简介

#include
#include

/**
	数组的介绍
	1.数组的取值
	2.数组的取地址
	3.数组是一块连续的内存空间
	4.数组的首地址和数组的地址相同 
	5.数组的设计 
*/ 
main(){
	char cArray[] = {'H','E','L','L','O'}; 
	int iArray[] = {1,2,3,4,5};
	//取数组的值
	printf("cArray[0]==%c\n",cArray[0]); 
	printf("iArray[0]==%d\n",iArray[0]); 
	
	//取内存地址
	printf("cArray地址==%#x\n",&cArray); 
	printf("cArray[0]地址==%#x\n",&cArray[0]); 
	printf("cArray[1]地址==%#x\n",&cArray[1]); 
	printf("cArray[2]地址==%#x\n",&cArray[2]); 
	printf("cArray[3]地址==%#x\n",&cArray[3]); 
	
	//内存是一块连续的内存空间 
	printf("iArray地址==%#x\n",&iArray); 
	printf("iArray[0]地址==%#x\n",&iArray[0]); 
	printf("iArray[1]地址==%#x\n",&iArray[1]); 
	printf("iArray[2]地址==%#x\n",&iArray[2]); 
	printf("iArray[3]地址==%#x\n",&iArray[3]);
	
	//用指针去取值
	printf("iArray==%d\n",*iArray); 
	printf("iArray[0]==%d\n",*iArray+0); 
	printf("iArray[1]==%d\n",*iArray+1); 
	printf("iArray[2]==%d\n",*iArray+2); 
	printf("iArray[3]==%d\n",*iArray+3); 

	printf("iArray[0]==%d\n",*(iArray+0)); 
	printf("iArray[1]==%d\n",*(iArray+1)); 
	printf("iArray[2]==%d\n",*(iArray+2)); 
	printf("iArray[3]==%d\n",*(iArray+3)); 
	
	
	printf("cArray[0]==%c\n",*(cArray+0)); 
	printf("cArray[1]==%c\n",*(cArray+1)); 
	printf("cArray[2]==%c\n",*(cArray+2)); 
	printf("cArray[3]==%c\n",*(cArray+3)); 
	system("pause");
}

输出到控制台内容如下:

C语言基础入门详解二_第3张图片
三、C语言中让用户输入数组

#include
#include

/**
	用户输入一个数组 
*/ 
main(){
	printf("请输入数组的长度:\n");
	//1.用户输入数组的长度
	int length;
	scanf("%d",&length);
	printf("您输入的数组长度为:%d\n",length);
	//2.用户根据用户输入的长度创建数组 
	int iArray[length];
	//3.让用户输入数组的值
	int i;
	for(i=0;i<length;i++){
		printf("请输入iArray[%d]的值:\n",i);
		scanf("%d",&iArray[i]);
	}
	//4.把数组内容打印出来
	for(i=0;i<length;i++){
		printf("iArray[%d]的值=%d\n",i,iArray[i]);
	}
	 
	system("pause");
}

输出到控制台内容如下:

C语言基础入门详解二_第4张图片
四、C语言中数组的取值运算

#include
#include

/**
	数组的介绍
	1.数组的取值
	2.数组的取地址
	3.数组是一块连续的内存空间
	4.数组的首地址和数组的地址相同 
	5.数组的设计 
*/ 
main(){
	char cArray[] = {'H','E','L','L','O'}; 
	int iArray[] = {1,2,3,4,5};
	//取数组的值
	printf("cArray[0]==%c\n",cArray[0]); 
	printf("iArray[0]==%d\n",iArray[0]); 
	
	//取内存地址
	printf("cArray地址==%#x\n",&cArray); 
	printf("cArray[0]地址==%#x\n",&cArray[0]); 
	printf("cArray[1]地址==%#x\n",&cArray[1]); 
	printf("cArray[2]地址==%#x\n",&cArray[2]); 
	printf("cArray[3]地址==%#x\n",&cArray[3]); 

    printf("cArray地址==%#x\n",cArray); 
	printf("cArray+0地址==%#x\n",cArray+0); 
	printf("cArray+1地址==%#x\n",cArray+1); 
	printf("cArray+2地址==%#x\n",cArray+2); 
	
	//内存是一块连续的内存空间 
	printf("iArray地址==%#x\n",&iArray); 
	printf("iArray[0]地址==%#x\n",&iArray[0]); 
	printf("iArray[1]地址==%#x\n",&iArray[1]); 
	printf("iArray[2]地址==%#x\n",&iArray[2]); 
	printf("iArray[3]地址==%#x\n",&iArray[3]);
	
	printf("iArray地址==%#x\n",iArray); 
	printf("iArray+0地址==%#x\n",iArray+0); 
	printf("iArray+1地址==%#x\n",iArray+1); 
	printf("iArray+2地址==%#x\n",iArray+2); 
	printf("iArray+3地址==%#x\n",iArray+3);
	
	//用指针去取值
	printf("iArray==%d\n",*iArray); 
	printf("iArray[0]==%d\n",*iArray+0); 
	printf("iArray[1]==%d\n",*iArray+1); 
	printf("iArray[2]==%d\n",*iArray+2); 
	printf("iArray[3]==%d\n",*iArray+3); 

	printf("iArray[0]==%d\n",*(iArray+0)); 
	printf("iArray[1]==%d\n",*(iArray+1)); 
	printf("iArray[2]==%d\n",*(iArray+2)); 
	printf("iArray[3]==%d\n",*(iArray+3)); 
	
	
	printf("cArray[0]==%c\n",*(cArray+0)); 
	printf("cArray[1]==%c\n",*(cArray+1)); 
	printf("cArray[2]==%c\n",*(cArray+2)); 
	printf("cArray[3]==%c\n",*(cArray+3)); 
	system("pause");
}

输出到控制台内容如下:

C语言基础入门详解二_第5张图片

#include
#include

/**
	用户输入一个数组 
*/ 
main(){
	printf("请输入数组的长度:\n");
	//1.用户输入数组的长度
	int length;
	scanf("%d",&length);
	printf("您输入的数组长度为:%d\n",length);
	//2.用户根据用户输入的长度创建数组 
	int iArray[length];
	//3.让用户输入数组的值
	int i;
	for(i=0;i<length;i++){
		printf("请输入iArray[%d]的值:\n",i);
//		scanf("%d",&iArray[i]);
		scanf("%d",iArray+i);
	}
	//4.把数组内容打印出来
	for(i=0;i<length;i++){
//		printf("iArray[%d]的值=%d\n",i,iArray[i]);
		printf("iArray[%d]的值=%d\n",i,*(iArray+i));
	}
	 
	system("pause");
}

输出到控制台内容如下:

C语言基础入门详解二_第6张图片

五、C语言中的指针长度

#include
#include

/**
	指针的长度 是八个字节 
	在C语言中,指针的长度是由平台的架构和操作系统的位数决定的。
	在大多数32位操作系统中,指针的长度为4字节(32位),而在64位操作系统中,指针的长度为8字节(64位)
*/ 
main(){
	int* iPoint;
	char* cPoint;
	printf("iPoint的长度==%d\n",sizeof(iPoint));
	printf("cPoint的长度==%d\n",sizeof(cPoint)); 
	system("pause");
}

输出到控制台内容如下:

C语言基础入门详解二_第7张图片
六、C语言中静态内存分配

#include
#include
/**
	静态内存分配地址 
*/ 
void func(int** address){
	//定义int类型的i变量,并且赋值100 
	int i = 100;
	//把i对应的地址赋值给 iPoint 
	*address= &i;
}
main(){
	//定义int类型的一级指针变量iPoint 
	int* iPoint;
	func(&iPoint);
	printf("*iPoint===%d\n",*iPoint);//*iPoint===100  
	printf("*iPoint===%d\n",*iPoint);//*iPoint===0 出现这个的原因是静态内存分配,执行完func()函数后,会被系统回收 
	printf("*iPoint===%d\n",*iPoint);//*iPoint===0
	system("pause");
} 

静态内存是程序编译执行后系统自动分配,由系统自动释放,静态内存是栈分配的。

七、C语言中动态内存分配

#include
#include
/**
	动态内存分配 
*/ 
void func(int** address){
	int i = 100;
	int* temp; 
	//malloc(int)-返回内存地址 
	temp=malloc(sizeof(int));
	//把i对应的值,赋值给temp地址对应的值 
	*temp = i;
	//把address对应的地址,对应的值改为temp 
	*address = temp;
	
//	free(temp); //回收内存 
}
main(){
	//定义int类型的一级指针变量iPoint 
	int* iPoint;
	func(&iPoint);
	printf("*iPoint===%d\n",*iPoint);//*iPoint===100  
	printf("*iPoint===%d\n",*iPoint);//*iPoint===100
	printf("*iPoint===%d\n",*iPoint);//*iPoint===100
	system("pause");
} 

内存分析图如下:

C语言基础入门详解二_第8张图片

输出到控制台内容如下:
C语言基础入门详解二_第9张图片
八、C语言中动态创建数组

#include
#include
/**
	动态创建数组 
*/ 
main(){
	//动态数组的创建
	printf("请输入您要创建数组的长度:\n");
	//1.让用户输入一个长度
	int length;
	scanf("%d",&length);
	printf("您输入的数组长度为:%d\n",length);
	//2.根据长度,分配内存空间 
	int* iArray = malloc(length*4);
	//3.让用户把数组中的元素依次的赋值 
	int i;
	for(i=0;i<length;i++){
		printf("请输入iArray[%d]的值:",i);
		scanf("%d",iArray+i);
	}
	//4.接收用户输入扩展数组长度
	int suppLength;
	printf("请输入您要扩展数组的长度:\n");
	scanf("%d",&suppLength);
	printf("您要扩展数组的长度为:%d\n",suppLength);
	//5.根据扩展的长度重新分配空间 
	iArray = realloc(iArray,(length+suppLength)*4);
	//6.把扩展长度的元素让用户赋值
	for(i=length;i<length+suppLength;i++){
		printf("请输入iArray[%d]的值:",i);
		scanf("%d",iArray+i);
	}
	//7.输出数组
	for(i=0;i<length+suppLength;i++){
		printf("iArray[%d]的值==%d\n",i,*(iArray+i));
	} 
	system("pause");
} 

输出到控制台内容如下:

C语言基础入门详解二_第10张图片

你可能感兴趣的:(Android,JNI基础笔记,c语言,开发语言,android,JNI,C语言入门)