Ⅰ c语言指针变量比较
首先要 分清, 是在 声明中 还是在语句中。
声明中,例如:
int a=1, b=2;
int *p, *q; // 声明 *p 和 *q 是指针,用于指向 int 型数据。
p=&a; q=&b; //语句, p 和 q 是指针 指向的数据 的地址,p 指向 a, q 指向 b.
if ( p < q) printf("...."); // 语句, p 和 q 是 "地址", 地址大小的比较。即 &a,&b 的比较。
若是 if ( *p < *q) printf("...."); // 语句, *p 和 *q 是 "数值“ 的比较,即 a,b 的比较,现在 a=1,b=2。
即,语句中 有星号的是 数值,没星号的是地址。
你的2道题里,p,q 是 地址。是地址值的比较。
Ⅱ C语言 指针变量与普通变量的区别
主要是指针有效率. 比如把 一个长 1M 的字符串发给子函数, 让它输出到文件.这个传递过程 你传指针就比传字符串的效率高百万倍!!
Ⅲ 关于C语言中指针变量的问题
int a = 15, b = 99, c = 22, d = 45;【a=15,b=99,c=22,d=45】
int *p = &a;【变量p指向变量a,p指向的单元的内容(*p)是15】
int *q = &b;【变量q指向变量b,q指向的单元的内容(*q)是99】
*p=c;【给p指向的单元赋值,而不是给p赋值,由于p指向变量a的单元,则相当于给a的内容赋值c的值】
*q=d;【同理】
后面语句中的*p赋值和变量定义语句中的*p赋值是不同的,变量定义int *p=&a;可以分解写成int *p; p=&a;是它的简写形式,简写形式是给p赋值而不是*p,因为在变量定义语句中的*表示的是变量类型而不是指p指向的单元的意思,可以看成:int* p=&a;这里的p变量类型是int *,后面的赋值是给变量赋值。
Ⅳ C语言中“指针”和“指针变量”的区别是什么
1、概念不同
“指针”是概念,“指针变量”是具体实现,指针也是一个变量,所以需要进行定义,而对于指针的定义,与一般变量一样。
2、 存放地址不同
一个变量的(内存)地址称为该变量的“指针”,通过指针能找到以它为地址的内存单元。而指针变量是用来存放另一个变量的地址的(即指针)。
(4)c语言指针变量扩展阅读:
指针和指针变量的关系
1、指针就是地址,地址就是指针。
2、地址就是内存单元的编号。
3、指针变量就是存放内存地址的变量。
4、指针和指针变量是两个不同的概念,但要注意的是,通常我们叙述时会把指针变量简称为指针,实际他们含义并不一样。
注:
指针里存的是100. 指针:地址 - 具体。
指针里存的是地址,指针:指针变量 -可变。
指针的好处:
1、直接访问硬件
2、快速传递数据(指针表示地址)
3、返回一个以上的值返回一个(数组或者结构体的指针)
4、表示复杂的数据结构(结构体)
5、方便处理字符串
6、指针有助于理解面向对象
Ⅳ C语言中指针变量的问题
int
a[10]是a[0~9];而后缀++是先用后加。
所以这句*p++=i;和很重要。每次循环是a[n]=n;最后次执行是a[9]=9,但p已经指向a[10](越界),才跳出循环。
此时p=a+10,*p=a[10]。
所以会出现指针变量跳出到数组以后的内存单元
和
必须加上第二个p=a,没有了第二个p=a怎么出来的答案这么不靠普。
建议初学者,一步步来,搞懂基本,对于++和数组名与指针的关系,这些有关地址的一点点来,要是几种混一起,容易乱。
Ⅵ c语言指针变量
#include <stdio.h>
#include <malloc.h>
int main(void)
{
char *s, *t, *ch;
int n = 0, i;
s = t = NULL;
ch = (char *)malloc(sizeof(char));
while (scanf("%c", ch))
{
if (*ch == 10)
break;
n ++;
t = s;
s = (char *)malloc(sizeof(char) * n);
if (t != NULL)
{
for (i = 0; i < n - 1; i ++)
s[i] = t[i];
free(t);
t = NULL;
}
s[n - 1] = *ch;
}
puts(s);
free(ch);
free(s);
return 0;
}
Ⅶ C语言指针变量定义
根据你的定义,使用LinkList定义的变量是指针变量,而加上*即LinkList *C表示的是指向指针的指针,表示二级指针变量。
你的合并函数是一个没有返回值的函数,所以你在函数体内更改C要达到更改实参的效果,你必须传入实参的地址。
如果是一级指针,C接收实参指向的对象地址,如果此时在函数体内对C进行赋值,只是改变了函数体内C的指向,实参还是指向原来的地址。函数内是改变不了实参C本身的指向,只有传入实参C变量本身的地址,那么形参就要定义指向指针的变量来接收实参。
以上是一种方法,另外一种方法就是通过函数返回值,返回新合并的链表的头。那函数类型就可以改为:
LinkList MergeList(LinkList a, LinkList b)。
这可以多练习好好理解一下。
Ⅷ C语言指针基本概念及其指针变量的定义是什么
在C语言里,指针是一组内存的头地址,可以存一个数,一个字符,也可以是一个数组.
变量,就是像定义一个整型变量一样的,定义的是一个指针型变量.
Ⅸ c语言指针类型定义指针变量
LinkList 是Node型指针,Linklist *s 里面 s是一个数组,数组里存放的是Node型指针,*s是数组第一个元素
Ⅹ C语言指针变量
假设a
是一个抽屉,里面只能放一个整数,(就是所谓的int
,这个不重要),当这个抽屉存在的时候,它就已经有一个编号了(就是地址),这个号是系统编的,不能更改。而p
是另一个抽屉,里面只能放编号,p=&a,就是把a的编号放到p
这个抽屉里,现在如果你知道了p
里放的编号,你就可以按照这个编号找到这个对应的抽屉。这就对应上了,不知道你能看明白不?
a
就是10
,这里的10
就是a
,它俩是同一个东西,当然放在同一个地方,这个地方的序号比如1000,这个序号保存在p
里。
a
和
10在这里就是一码事,它俩指的是同一个东西,比如一只白狗叫a,这个a
就是指这只白狗,a和这只白狗此时就是一回事,同一个东西在某一时刻还能在俩地方吗?