c语言基础总结--指针详细版

在vs2013上编写代码,如果在vs2010旗舰版的话,那边要求所有的变量需要提前很不方便.

实际上编程语言都有很多共同性,当然也有一些独特的地方,c语言的指针需要明白才好做jni开发.

引入库(类似Android或java中的import):
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h> //电脑窗口输出

.........


----最后个人学习总结:(三个行总结指针的关系)
int  *p;        //p中的地址所指向的内容   
p;               //p这个变量的内容,这里p存的是地址,则为地址   
&p;            //取p的地址   


-----------------------------代码领域-----------------------
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>


//1.基本数据类型
//int short long float double char
/*
int %d
short %d
long %ld
float %f
double %lf
char %c
%x 十六进制
%o 八进制
%s 字符串
*/
void main(){
	int i = 1;
	float f = 23.3;

	printf("%d\n", i);
	printf("%f\n", f);
	printf("int占用%d字节:\n", sizeof(int));
	printf("char占%d字节\n", sizeof(char));
	printf("float占%d字节\n", sizeof(float));
	
	int n = 0;
	for ( n = 0; n < 10; n++)
	{
		printf("循环数值:%d\n", n);
	}
	system("pause");

}

编译结果:



-------------------代码2------------------
#define  _CRT_SECURE_NO_WARNINGS  //必须要第一行,scanf权限
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

//2.输入输出函数
void main(){
	int i;
	printf("请输入一个整数: ");
	//赋值
	scanf("%d", &i);  //控制台输入,&取地址符号(注意:vs2013需要安全权限,加上_CRT_SECURE_NO_WARNINGS)
	//打印
	printf("i的值为: %d\n", i);
	system("pause");

}

编译结果:

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

//指针
//指针存储的是变量的内存地址
//内存地址,系统给数据分配的编号(门牌号)
void main(){
	int i = 90;
	//指针变量,创建一个int类型的指针
	int* p = &i; //p的值就是i这个变量的内存地址
	printf("%#x\n", p);

	float f = 89.5f;
	//创建一个float类型的指针
	float *fp = &f;
	printf("%#x\n", fp);

	system("pause");
}

编译结果: //地址:是系统分配的,获得16进制每次都会有新的值


#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
void change(int *p){
	*p = 300;
}
//变量名,对内存空间上的一段数据的抽象
void main(){
	int i = 90;
	int *p = &i;
	printf("i的地址:%#x\n", &i);
	printf("p的地址:%#x\n", &p);

	printf("p的地址:%d\n", *p);
	printf("p的:%#x\n", p);
	printf("i的值为:%d\n", i);

	//间接赋值i=200;
	change(p);
	printf("2i的地址:%#x\n", &i);
	printf("2p的地址:%#x\n", &p);
	printf("2p的指针数值:%d\n", *p);
	printf("p的:%#x\n", p);
	printf("2i的值为:%d\n", i);

	system("pause");
}
编译结果:

------笔试考题:c语言之do..while循环:

指针的->形式解析:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <string.h>

struct people{
	char pname[10];
};
struct Man
{
	char name[20];
	int	age;
	//int(*func)();
	struct people po;
};

void main(){
	struct Man m1 = { "Jack", 30 };
	struct Man *p = &m1;
	printf("%s,%d\n", m1.name, m1.age);
	printf("%s,%d\n", (*p).name,(*p).age);
	printf("%s,%d\n", p->name, p->age);

	getchar();
}
编译结果:

指针与普通的格式:
	printf("%s,%d\n", m1.name, m1.age);
	printf("%s,%d\n", (*p).name,(*p).age);
	printf("%s,%d\n", p->name, p->age);






猜你喜欢

转载自blog.csdn.net/insist_hui/article/details/80282182