本文目录一览:
- 1、关于c语言指针应用的一些疑问?
- 2、c语言指针的疑问
- 3、C语言指针问题
- 4、关于c语言中指针的小疑惑!
- 5、关于C语言指针的一个疑问?
- 6、关于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]);
就是把二维当一维,直接看元素在第几个。