您的位置:

c语言中定义指针的疑问,关于c语言指针的概念问题

本文目录一览:

关于c语言指针应用的一些疑问?

1: 只是类型变化,其值是不变的。

2,3.1:没问题

3.2:没啥技巧,这个就是一个记忆过程,把课本上关于运算符结合顺序和优先级的内容多看看

3.3:当然不是,这只是取这个指针指向的数组的下标为act_e-header.s.d_size的元素而已

4:这是地址比大小。如果地址在同一个数组中当然有意义,数组中的元素总是按顺序排的,地址小的下标也小

c语言指针的疑问

你是自学还是老师教到这里了?

你要改变传递参数的值, 就要传入该参数变量的地址, 哪怕它本身就是一个指针变量

//或者把主函数中的p,q变量当作是一个int变量,但是在函数中取得其指向的值时要显式转换为int*

void swap(int * p,int * q)

{

int t = *p;

*p=*q;

*q=t;

printf("swap函数排序*p=%d,地址是%d,*q=%d地址是%d\n\n",*(int*)p,*p,*(int*)q,*q);

return;

}

int main(void)

{

int a =20,b=10 ,*p = a,*q= b;

printf("原来主函数a地址是%d,b地址是%d,p和q是%d和%d\n\n",a,b,p,q);

swap(p,q); //若ab则交换地址,实现不改变ab的值且排序

printf("再次打印:a=%d,b=%d,*p=%d,*q=%d,p地址%d,q地址%d\n",a,b,*p,*q,p,q);

return 0;

}

C语言指针问题

指针就是地址,而指针变量就是存放地址的变量,比如int

*p;*p整个来看就是变量,和变量的含义是一样的,而p表示的才是指针变量,里面存的是一个地址(指针);*p表示的是去这个地址的内容,也就是相当于变量。所以int

a,*p实际上定义的都是变量。是取址运算符,n是去变量n存储单元的地址,n也就是一个指针(地址),指针和地址的意义其实是一样的。指针变量就是可以存放不同指针的变量。指针加上*,表示的是取指针存储单元的内容。和变量是一样的。指针这里很难理解的,你光靠别人说的是理解不了的,好好看看书上的解释,再自己变成试验。指针就是地址,地址就是指针,指针变量就是存放不同指针/地址的变量,指针变量前面加*就是取指针/地址存储单元的内容。

关于c语言中指针的小疑惑!

你看到的*p1=a应该是在定义的时候就给值的情况比如: int *p=a

而p1=a应该是定义之后给值的情况比如: int *p; p=a;

C语言规定,可以在定义时给值的

关于C语言指针的一个疑问?

int *p=a;这是定义p,并对p赋值

*p=a;这是对*p赋值

两者不一样

关于C语言指针定义的问题

a是行指针,也就是指向一个包含3个int一维数组的指针(地址就是指针,a是指针常量,p是指针变量)。你要将a赋值给p,就要用行指针来接,所以你声明的p是指向一个包含3个int的指针p;如果声明的是int

*p,p就是指向int的指针,数据类型不匹配。

输出的话,可以这样p[i][j],上面说了,a,p都是地址,a能做的,p就能,只是说p是可变的,a不是。

当然你可以强转:

int*p;

p=(int*)a;

但是这样的话你的p是,指向int的指针,

输出就不能那样了,改为:

printf("%d",*(p+3*i+j));

或者

printf("%d",p[3*i+j]);

就是把二维当一维,直接看元素在第几个。