c语言函数指针赋值给变量 c语言 指针 赋值

c语言 指针赋值【c语言函数指针赋值给变量 c语言 指针 赋值】空定义了一个指针temp,但是temp没有指向任何变量,所以不能对它所指向的地址赋值(*temp=*p1是在对temp指向的地址赋值,既然它没有指向任何已知的地址 , 当然结果是不可预见了).
这个函数也不需要这样的指针,修改如下即可:
swap(int *p1,int *p2)
{int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
C语言中可以给指针变量赋值常数吗?C语言中可以给指针变量赋值常数 。
1、申请了空间(在常量区) , 存放了字符串
2、在字符串尾加上了'/0'
3、返回地址,这里就是返回的地址赋值给了p
字符串常量"hello"出现在一个表达式中时,"hello"表达式使用的值就是这些字符所存储的地址(在常量区) , 而不是这些字符本身 。所以,可以把字符串赋值给指向字符的指针p,而不能把字符串赋值给一个字符数组 。
chara[10]=“hello”;//这样可以 , 这种情况是c语言初始化所支持的,如果写成chara[10],然后a=“hello”这样就错误了 。同样是a数组,chara[10]=“hello”;这种是数组的初始化,和a[0]=‘h’a[1]=‘e’,是一个道理 。
换成chara[10],然后a=“hello”就不行了“hello”赋值的值是一个地址 , 而a虽然也有地址,但是这与指针是不一样的,指针的值是地址,而数组的值虽然也是地址,但是却是一个常量,所以不能给常量赋值 。
扩展资料
C语言中给指针变量赋值常数注意事项
在使用指针的时候,指针可以自增 , 而数组不能自增,编译器给数组分配了空间 , 数组a的地址就是一个常量了,让常量自增这肯定是不行的 。在指针自增的时候 , 编译器会自动识别类型,比如指针是指向int型的,想获取下一个的地址时,指针直接p就行了 。
特别需要注意的是 , 在void指针使用的时候,不能使用指针运算,应为void型编译器不能识别类型的长度(即指针所指对象的体积) , p这样就是不合法的,即不能进行数学运算,也不能使用*取值操作 , 想使用必须转换为其它的类型 。
参考资料来源:百度百科—c语言
请问C语言 char类型的指针要怎么赋值?#include stdio.h
#include string.h
#include stdlib.h
intmain()
{
char *source = malloc(20*sizeof(char);
printf("Please input source \n");
scanf("%s",source);//f方法三
printf("%s\n",source);
char *temp = "my input source"
sprintf(source,"%s",temp);//方法一
printf("%s\n",source);
strcpy(source,temp);//方法二
printf("%s\n",source);
return 0 ;
}
指针是无法存放字符串的,只有指针指向的那块空间才能存放字符串 , 所以我第一句话给它开辟了20个空间,这样就可以给指针指向的那块空间赋值了,谢谢
另外给你一个建议 char *a = NULL,*b =NULL,*c =NULL;这样的写法是不规范的 , 很容易出错 。标准形式应该是char *a= NULL;
char *b = NULL;
char *c = NULL;
c语言函数指针赋值给变量的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言 指针 赋值、c语言函数指针赋值给变量的信息别忘了在本站进行查找喔 。

    推荐阅读