本文目录一览:
- 1、可以不学数据结构直接学哈希表吗?C语言实现
- 2、c语言中EOF的用法
- 3、c能不能动态宣告阵列变数
- 4、股票行情软件中的指标 是什么语言?
- 5、C语言 关于POINTER(指针)的问题, 急!!!!
- 6、C语言中如何读取一个已知地址中储存的变数
可以不学数据结构直接学哈希表吗?C语言实现
可以的,哈希表那部分和图,树联系不是很大。直接看是完全可以的,而且哈希这部分也比较容易些。
c语言中EOF的用法
c语言中EOF的用法 1、EOF是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是档案(file),也可以是标准输入(stdin)。EOF不是特殊字元,而是一个定义在标头档案stdio.h的常量,一般等于-1:#define EOF (-1)。除了表示档案结尾,EOF还可以表示标准输入的结尾。但是,标准输入与档案不一样,无法事先知道输入的长度,必须手动输入一个字元,表示到达EOF。
2、例程:
#include stdio.hint main(){char c;while((c = getchar()) != EOF){putchar(c);}return 0;}
说明:在Windows上按CTRL+Z键,表示EOF。
注意:EOF虽然是档案结束符,但并不是在任何情况下输入Ctrl+D(Windows下Ctrl+Z)都能够实现档案结束的功能,只有在下列的条件下,才作为档案结束符。
(1)遇到getcahr函式执行时,要输入第一个字元时就直接输入Ctrl+D,就可以跳出getchar(),去执行程式的其他部分;
(2)在前面输入的字元为换行符时,接着输入Ctrl+D;
(3)在前面有字元输入且不为换行符时,要连着输入两次Ctrl+D,这时第二次输入的Ctrl+D起到档案结束符的功能。
C语言中~的用法?
是条件运算子,相当于 if() else 结构。
1、c语言
C语言是一门通用计算机程式语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编
译、处理低阶储存器、产生少量的机器码以及不需要任何执行环境支援便能执行的程式语言。
2、具体介绍
尽管C语言提供了许多低阶处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出
的C语言程式可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(微控制器或称MCU)以
及超级电脑等作业平台。二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由
美国国家标准局为C语言制定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标
准。
3、编译器
GCC,GNU组织开发的开源免费的编译器
MinGW,Windows作业系统下的GCC
Clang,开源的BSD协议的基于LLVM的编译器
Visual C++ :: cl.exe,Microsoft VC++自带的编译器
C语言语言中FOR的用法
for 是一个回圈语句,和while是类似的,for一般的用法有:
for(i=0;i10;i++)
{
printf("hello world");
}
这里就是输出10次hello world,为什么是10次呢?因为首先i=0,第一次先判断i10是否成立,成立的话,就执行 printf("hello world");,然后回过来i++,再判断i10是否成立,成立的话再执行{ }内的程式,最后当i=9时,再回过来i++,i变为10,再判断i10已经不成立了,所以就结束for语句,i从0~9一共是10次,所以输出10次hello world。while的话也类似的道理。
for也可以这样用:for(int i=0;i10;i++) ,这里的i的周期(或者生命)只存在与这个for语句内,当for语句结束后,这个i就不存在了,是个临时变数,其他的话用法基本上就是这样。
C语言中,typedef的用法
定义型别,例如:
typedef long time_t;
之后在程式中宣告变数时,
time_t a;
就相当于
long a;
再如
有
typedef enum{yes,no} yes_no;
之后
yes_no a;
相当于
enum{yes,no} a;
C语言中new的用法?
C语言没有new关键词,应该是C++里面编译设计增加了new new就是动态分配一个堆空间. int *p = new int;使用指标指向新分配的连续空间 也可以是.int *p = new int[10];阵列
C语言中rand的用法
rand
语法:
#include stdlib.h int rand( void );
功能: 函式返回一个在零到RAND_MAX 之间的伪随机整数。例如: srand( time(NULL) ); for( i = 0; i 10; i++ ) printf( "Random number #%d: %d\n", i, rand() );
在vs中RAND_MAX的预设值是0x7fff
具体可以
#includestdlib.h
#includeiostream.h
void main()
{
coutRAND_MAXendl;
}
来检视大小。
c语言中 free的用法~
malloc用来动态申请记忆体空间,而free用来释放malloc申请的空间。如:
struct
{
int a;
int b;
}node;
main()
{
node *lnode;
lnode-a=33;
lnode-b=99;
lnode=(node*)malloc(sizeof(node));
printf("a=%d b=%d",lnode-a,lnode-b);
free(lnode);
return 0;
}
C语言中_at_的用法
at+ 读写开启一个文字档案,允许读或在文字末追加资料。
在vector里用,vector.at(n)表示vector里的下标为n的值。
C语言是一门通用计算机程式语言,应用广泛。
C语言的设计目标是提供一种能以简易的方式编译、处理低阶储存器、产生少量的机器码以及不需要任何执行环境支援便能执行的程式语言。
C语言中messagebox的用法
#include windows.h
int main(void)
{
MessageBox(NULL, "你好(内容)", "对话方块(标题)", MB_OK);
return 0;
}end main
C语言中char的用法
char是计算机程式语言(c、c++、java、VFP等)中可容纳单个字元的一种基本资料型别。
char 是一个数据型别,作用是定义字元型变数(单个或是字串)。
比方int 是整形资料,int a = 3;这里int 是型别, a 是整型变数,3是赋值;
char s = 'A'; char是字元型别,s是字元型变数,A是赋值给变数s;
char s[] = "c program"; char是字元型别,s[]是字元型阵列,"c program"是赋给阵列的值。
c能不能动态宣告阵列变数
c能不能动态宣告阵列变数
C语言中可以用变数定义阵列的个数。 原因如下: 由于阵列在定义的时候,系统就会分配对应的储存单元,如果用变数,系统就不知道该分配多少位元组的储存单元,就会报错。 但是可以用巨集定义定义的常量定义阵列个数,因为巨集定义是在编译阶段进行字元.
android的gridview能不能动态改变行列显示数?
不知道行不行,你可以试试下面的方法,,如果这个方法不行 那应该就不行
setNumColumns(int numColumns) 设定显示的列数 (有可能还需要呼叫一下Adapter的NotifyDataSetChanged)
要控制行数 只需要控制Adapter的 getCount回拨的返回值就行了 然后notify重新整理下!
C++为什么不能动态建立阵列大小
能的,用new ,
例:int a ;
cina;
int *s = new int[a];
new和delete运算子用于动态分配和撤销记忆体的运算子new用法:
1. 开辟单变数地址空间
1)new int; 开辟一个存放阵列的储存空间,返回一个指向该储存空间的地址.int *a = new int 即为将一个int型别的地址赋值给整型指标a.
2)int *a = new int[5] 作用同上,但是同时将整数赋值为5
2. 开辟阵列空间
一维: int *a = new int[100];开辟一个大小为100的整型阵列空间
二维: int **a = new int[5][6]
三维及其以上:依此类推.
一般用法: new 型别 [初值]delete用法:
1. int *a = new int; delete a; 释放单个int的空间
2.int *a = new int[5]; delete [] a; 释放int阵列空间
要访问new所开辟的结构体空间,无法直接通过变数名进行,只能通过赋值的指标进行访问.
用new和delete可以动态开辟,撤销地址空间.在程式设计序时,若用完一个变数(一般是暂时储存的阵列),下次需要再用,但却又想省去重新初始化的功夫,可以在每次开始使用时开辟一个空间,在用完后撤销它.
unity能不能动态获取元件(指令码)啊?
可以的,getpnent就行
请问能不能宣告 int[0]阵列?
这不是语法bug或者编译器的错误,
c++中可以宣告元素个数为零的阵列是为了能够宣告个数为变数的阵列.
如int* p = new int[x];
x是无符号的int.
当然x为0的时候是不可以给它赋值的,执行时会挂掉
x的值是在执行时确定的,所以编译的时候编译器当然不会认为是一个错误
MFC如何手动为控制元件建立成员变数,能不能动态建立?
所谓手动,就是在.h和.cpp档案中增加那几行程式码。
动态建立是没有意义的,因为控制元件关联变数时为了程式码操作省事儿,不需要变数关联也能完成所有的操作。
而实际上控制元件关联变数,就是一组CDataExchange资料互动,通过动态完成,你需要自己处理资料互动,比直接使用控制元件指标完成要复杂的多。
Keil C51 位变数能不能定义阵列?
试试呗
我的结论是不行
会报错 error C168: array of bit
手册描述:An array may not have type bit as its basic type. This limitation is imposed by the architecture of the 8051.
c++中 用extern宣告外部变数时能不能给变数赋初值
肯定不可以的啊,宣告的目的是告诉编译器变数或函式的型别,暗示在某处会有他的正确定义。
准确说起来,变数与函式是相同的,都分为宣告和定义,即在前面加上extern,只不过出于简单的目的,函式的宣告省略了extern关键字,函式不能再宣告(除非是定义)处定义函式体。
我们通常的变数宣告主要是宣告变数的型别(编译器认为是分配记忆体的方式):int variable;
这已经有足够的资讯令编译器(在宣告的地方)分配记忆体。
希望可以帮到你
PHP 中如何宣告静态阵列变数
static $test = array();
c 怎么动态宣告二维阵列
#include iostream
using namespace std;
int main()
{
int **p;
int m = 10, n =100;
p = new int *[m];
for (int i = 0; i m; i++)
{
p[i] = new int[n];
}
return 0;
}
股票行情软件中的指标 是什么语言?
股票行情软件是基于Java计算机编程语言上的,也就是K-JAVA即J2ME软件平台
,专门用于嵌入式设备的JAVA软件。
软件开发商以K-Java编程语言为手机开发应用程序,可以提供,游戏,个人信息处理,股票,电子地图等服务程序。 摩托罗拉率先在手机上预装了K-JAVA
K-JAVA的平台开放性:JAVA语言可以跨平台运行,软件开发商可以很容易的开发应用程序。
K-JAVA功能可以做移动商务、移动办公 、信息点播、股票、外汇、地址簿、日历、文件管理 、天气预报等;
Java包含了一种计算机编程语言和一个平台,随着K-Java技术的不断完善与发展,发展商们将对具有K-Java功能的手机用户提供更还更全面的服务。如: 互动游戏、互动新闻 、增强手机连接到无线网络后进行数据交换的安全性、 载以Java语言写成的内容、遥控家用电器。
Java有许多值得称道的优点,如简单、面向对象、分布式、解释性、可靠、安全、结构中立性、可移植性、高性能、多线程、动态性等。
C语言 关于POINTER(指针)的问题, 急!!!!
C 的 pointer (指标, 另一常译为指位器)一般是被认为 C 语言中最具威力的工具及
最难以学习的, 事实上 pointer 并不困难.
第一个范例:
/* ====================
pointer - 1
==================== */
#include stdio.h
int main()
{
char *s_pointer = “Hello”;
char s[] = “World”;
printf(“%s\n”, s_pointer );
printf(“%s”, s );
return 0;
}
程式执行结果:
Hello
World
先解释一下这一行:
char *s_pointer = “Hello”;
首先编译器会预留一块记忆空间存放 Hello, 再把这个空间的 address (也就是 ‘H’
字元的位址) 设定给 s_pointer.
有点困惑吗? C 的 pointer 与 array 很类似, 基本上 array 只是一块连续的记忆空间,
一个变数存放著这个空间的 address (位址), 而 pointer 也只是一个变数存放著一个
address. 若还是不明白, 在以后我们会以更多的范例来说明 pointer 的观念与使用
以及 pointer 与 array 的关系.
底下的例子:
/* ====================
pointer - 2
==================== */
#include stdio.h
int main()
{
char *s_pointer;
char str[] = “Hello World!”;
s_pointer = str;
printf(“%s\n”, s_pointer );
return 0;
}
执行结果:
Hello World!
上面程式中, 所做的事情不是 string copy, 而是将 pointer 所指的 address 设定(assign)
为 str 所指的值, 而此时有 str 及 pointer 指向 “Hello World!”.
再看底下的例子:
/* ====================
pointer - 3
==================== */
#include stdio.h
int main()
{
char *s_pointer;
char str[] = “Hello World!”;
s_pointer = str;
s_pointer[0] = ‘h’; /* ‘H’ 转 ‘h’ */
printf(“%s\n”, str );
return 0;
}
执行结果:
hello World!
前面提过, pointer 与 array 其实只是一个变数存放著一个 address, 在前面的 array 章节中
学到的 array 操作自然可以应用(apply)在 pointer 上, 我们把 s_pointer 所指的
address (位址) 上的第一个 element 改成 ‘h’. 又因为 str 所指的 address 与 s_pointer 一样,
所以 printf 输出 str 为 “hello World!”.
底下的例子:
/* ====================
pointer - 4
==================== */
#include stdio.h
int main()
{
char *s_pointer;
char str[] = “Hello World!”;
s_pointer = str;
s_pointer = s_pointer + 1; /* 也可写成 s_pointer++ */
printf(“%s\n”, str );
printf(“%s\n”, s_pointer );
return 0;
}
执行结果:
Hello World!
ello World!
既然我们可以指定 pointer 的 address (位址), 自然就可以将现在所指的 address
往前或往后减少或累加, 上例中我们是累加:
s_pointer = s_pointer + 1;
这一行程式会将 s_pointer 所指的 address 加一, 因此原本 s_pointer 是指向 ‘H’,
加一之后变成 ‘e’ 开始.
请参考下图.
str(指向 H )
H
e
l
l
o
W
o
r
l
d
!
NULL
s_pointer (指向 H)
s_pointer = s_pointer + 1 (指向 e)
/* ====================
pointer - 5
==================== */
#include stdio.h
int main()
{
char *s_pointer = “Hello”;
char ch1, ch2;
ch1 = *s_pointer;
ch2 = s_pointer[0];
printf(“%c, %c”, ch1, ch2 );
return 0;
}
执行结果:
H, H
程式示范如何以 pointer 运算取出目前 pointer 所指的 address 上的资料,
我们已知 s_pointer 所指的位址及其上面存放的资料, 以 ‘*’ pointer operator
(指标运算元) 可取出所存放的资料, 程式之中比较了等¤的 array 操作,
在程式开发上, 个人是偏爱使用 array operator, 但有些 programmer 认为
使用 pointer operator 编译器产生的 code 较 array operator 快.
以下范例是用 pointer 的间接运算子的例子, 当然也可以用 array operator 做到:
/* ====================
pointer 6
==================== */
#include stdio.h
void main()
{
char *str = "Eric";
printf( "%c", *(str+0) ); /* 也可写 printf(“%c”,str[0] ); */
printf( "%c", *(str+1) ); /* 也可写 printf(“%c”,str[1] ); */
printf( "%c", *(str+2) ); /* 也可写 printf(“%c”,str[2] ); */
printf( "%c", *(str+3) ); /* 也可写 printf(“%c”,str[3] ); */
}
程式执行结果:
Eric
看完以上的例子是否更清楚 pointer 的使用, 及 pointer 与 array 之间的关系?
在一个比较大的软体开发计划中, 常常 要动态向系统要求记忆体, 以下是一个范例:
/* ================
memory allocation/free 1
================ */
#include stdio.h
#include stdlib.h
int main()
{
char *str;
char s[] = “Hello World!”;
int length;
length = strlen( s ) + 1; /* 求得 s 长度, 加 1 是因为结束字元. */
str = (char*)malloc( length ); /* 向O.S 要 memory */
strcpy( str, s );
printf(“%s\n”, str );
str[0] = ‘h’;
printf(“%s\n”, s );
free( str );
return 0;
}
程式执行结果:
Hello World!
Hello World!
strlen 是 C 的 standard library 中求得 string length 的一个 function, 取得 s 的长度之后
加 1 是因为 strlen 并不会把结束字元算进字串的长度. 另外程式中,
以 malloc 这个函数向系统索取一块记忆空间, malloc 传回这个空间的 address.
str = (char *)malloc( length );
其中, (char *)是我们强制转型, 将 malloc传回的 pointer 型态转型与 str 一致为
(char *). 接著再以 strcpy 将 s 里面的字元 copy 至 str.
程式后面的 str[0] = ‘h’ 只是为了证明 str 与 s 所指的 address 及资料是完全不同的.
程式中以 free 这个 function 释放(release) 之前向系统索取的空间, 所谓有借有还,
维持良好的程式开发习惯.
/* ================
memory allocation/free 2
================ */
#include stdio.h
#include stdlib.h
int main()
{
char *str;
char s[] = “Hello World!”;
int length;
length = strlen( s ) + 1;
str = (char*)malloc( length ); /* 向O.S 要 memory */
if( str == NULL )
{
printf(“Memory allocation failed”);
return 0;
}
strcpy( str, s );
printf(“%s”,str );
free( str );
return 0;
}
执行结果, 记忆空间充足的情况”
Hello World!
或记忆空间不足时:
Memory allocation failed
上面的程式中, 我们多了一个判断, 判断 str 是否为 NULL, 若为 NULL 则印出
”Memory allocation Failed”, 接著离开程式返回系统, 因为 malloc 在无法取得
你所 大小的记忆空间时会传回 NULL. 这一个判断是必 的, 特别是在开发
大型系统时要处理这些问题.
最后谈到的是 位址运算元, 这个运算元符号虽然与 Bitwise AND 一样,
但用法不同, Bitwise AND 的用法是:
Identifier1 Identifier2
而现在说的位址运算元是:
Identifier
本运算元会传回 Identifier 的 Address(位址), 在 C 中, 所有的 variable (变数)
都存在一个实体的记忆体空间中, 当你 要知道这个变数存放的位址时,
就可以使用 “” operator.
/* ====================
operator.
==================== */
#include stdio.h
int main()
{
int *pointer_a, a;
pointer_a = a;
a = 10;
printf(“%d, %d”, a, *pointer_a );
return 0;
}
执行结果:
10, 10
程式中, 将 a 的 address 设给 pointer_a (另一说法是: 把 pointer_a 这个 pointer 指向 a ),
因此 pointer_a 所”指”的 address 与 a 的 address 一样, 所以 a, 与使用 *pointer_a 取出
指向的位址上的资料是一样的.
在前面的”C的输出与输入”章节中, 函数 scanf 的参数皆是 pointer, 所以我们以
“” operator 将变数的 address 传入.
C语言中如何读取一个已知地址中储存的变数
C语言中如何读取一个已知地址中储存的变数
直接用 (char*)(0x000)
补充一下,不同型别的变数占的储存单元(位元组)是不同的,char*只是该位元组的值,而int*则是该位元组和后面3个位元组(总共4个位元组)的值,你要确定到底一次读多少位元组,选择合适型别的指标。
组合语言如何读取一个地址中储存的变数
组合语言读取一个地址的变数有专门的指令,比如51微控制器的几种读取方法表述如下:
1、读取程式储存器地址中的变数资料
MOV DPTR,#1000H
CLR A
MOVC A,@A+DPTR
2、读取外部资料储存器中的变数资料
MOV DPTR,#1000H
MOVX A,@DPTR
MOV R0,#80H
MOVX A,@R0
c语言中是变数储存地址还是地址储存变数啊
变数在记忆体中储存
每个记忆 *** 置都有一个编号,就是记忆体地址值
地址值,就是个整数,所以,也可以储存到变数中,C中的指标变数,就是专门用来储存地址的变数 。
C语言中,如何让指标指向一个已知地址?
让指标指向一个已知地址,必须转换型别,在地址前面加上int*,否则不成功。
指标(Pointer)是程式语言中的一个物件,利用地址,它的值直接指向(points to)存在电脑储存器中另一个地方的值。由于通过地址能找到所需的变数单元,可以说,地址指向该变数单元。因此,将地址形象化的称为“指标”。意思是通过它能找到以它为地址的记忆体单元。
c语言中变数是怎样储存的?
根据各变数的型别储存方式不一样,静态变数,动态变数等不一样
C语言中指标变数只能储存地址?
是的,目前绝大多数系统下,任何型别的指标都是占用4个位元组(见过比较新的RedHat还是Ubantu的,指标是占8个位元组的),而指标占用空间存在的值就是指标指向的变数的记忆体地址,而目前的记忆体地址都是4G的(我们列印看到的都是虚拟的记忆体地址,所以可能你的电脑的记忆体是8G的,但是用%x列印输出绝对不会超过4G)。指标本来就是间接定址,是需要二次定址的,指标变数本身也只能储存地址
在C语言中如何列印变数的地址?
需要定义指标变数才能输出变数的地址
举个简单的里自来说:
#include "stdio.h"
void main()
{
int a=1,b=2;
int *p1,*p2;
p1=a;p2=b;
printf("变数a的地址为:%d\n变数b的地址为:%d\n",p1,p2);
system("PAUSE");
}
执行程式即可看到变数a和变数b在记忆体中分配的地址
C语言中,已知一个字串的地址,如何读取地址中的字串??急求!
printf("%s",addr);可以直接显示字串
C语言中函式是如何储存的
1. 程式码本身是储存在记忆体的程式码段中的,而函式没有说储存的概念,函式呼叫时是通过栈来实现的。
2.在函式体内宣告的变数在预设情况下都是auto储存型别
在程式码块之间传递资讯的一种方法就是使用外部变数。当一个变数在函式的外部被宣告时,安的储存空间是永久分配的,安人储存型别是extren.外部变数的宣告看上去和函式或程式码块内部所宣告的变数一样。外部变数对于它之后的所有函式都有效。在程式码块或函式后,外部变数仍然存在。
3.static的基本用途是允许一个区域性变数在重新进入程式码块时能够保持原来的值。这和自动变数形成了鲜明的对比,自动变数在程式码块时会被销毁,再次进入这个程式码块时,它必须重新进行初始化。
4.egister储存型别告诉编译器相关的变数应该改量储存在高速度的暂存器中。使用register储存型别的目的一般是为了提高执行速度,但是,register宣告只是向编译器所提出的“建议”,并非强制要求。