在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);