精华内容
下载资源
问答
  • 不同类型的指针相互赋值
    2021-05-21 04:59:18

    一个代码:

    #include

    #include

    #define uchar unsigned char

    #define uint unsigned int

    void display(uchar *p);

    char h[4] = {'A','B','C','\0'};

    char e[4] = {'E','F','L','\0'};

    char l[4] = {'M','N','O','\0'};

    char o[4] = {'X','Y','Z','\0'};

    int main(void)

    {

    int i;

    char c;

    uint set[5];

    set[0] = h;

    set[1] = e;

    set[2] = l;

    set[3] = l;

    set[4] = o;

    while(1){

    for (i = 0; i < 5; ++i){

    display(set[i]);

    printf("\n");

    sleep(1);

    }

    }

    }

    void display(uchar *p)

    {

    while(*p != '\0'){

    printf("%c", *p);

    printf("%c", *(p+1));

    ++p;

    }

    }

    警报如下:

    test.c:21: 警告: 赋值时将指针赋给整数,未作类型转换

    test.c:22: 警告: 赋值时将指针赋给整数,未作类型转换

    test.c:23: 警告: 赋值时将指针赋给整数,未作类型转换

    test.c:24: 警告: 赋值时将指针赋给整数,未作类型转换

    test.c:25: 警告: 赋值时将指针赋给整数,未作类型转换

    test.c:29: 警告: 传递参数 1 (属于 ‘display')时将整数赋给指针,未作类型转换

    其中21-25就是

    set[0] = h;

    set[1] = e;

    set[2] = l;

    set[3] = l;

    set[4] = o;

    29是

    display(set[i])

    虽然只是警报,并且在linux下面也可以运行的很好.但是既然警告了.还是值得讨论下.

    待续~

    关注中...

    如果有哪位知道.可否回复告诉我.谢谢~

    ------------------------------------------------------------

    关于这个问题,我问了寝室的小丁.经过他的修改.程序已经不报警告了.

    #include

    #include

    #define uchar unsigned char

    #define uint unsigned int

    void display(uchar *p);

    char h[4] = {'A','B','C','\0'};

    char e[4] = {'E','F','L','\0'};

    char l[4] = {'M','N','O','\0'};

    char o[4] = {'X','Y','Z','\0'};

    int main(void)

    {

    int i;

    char c;

    int set[5];

    set[0] =(int) h;

    set[1] =(int) e;

    set[2] =(int) l;

    set[3] =(int) l;

    set[4] =(int) o;

    while(1){

    for (i = 0; i < 5; ++i){

    display((uchar *)set[i]);

    printf("\n");

    sleep(1);

    }

    }

    }

    void display(uchar *p)

    {

    while(*p != '\0'){

    printf("%c", *p);

    printf("%c", *(p+1));

    ++p;

    }

    }

    在字模数组的首地址赋值方面用了强制转换为int.在函数调用方面.因为子函数中要求到输入为指针,所以在前面的调用时候,不能单纯的写set[i].而是传指针过去.(uchar *)的强制类型转换是为了配合(uchar *p).

    -------------------------------------------

    应该注意的2点是:1.给指针只能传地址,不能传值.否则要做强制类型转换.

    2.在做类型转换和赋值时候,应该注意赋值的类型匹配.

    更多相关内容
  • // describe: 非虚函数情况下,将子类指针赋给积累指针,验证最终调用 // 基类函数还是子类函数。 //============================================================== #ifndef ANIMAL_H #define ANIMAL_H //======...
  • // describe: 非虚函数情况下,将子类指针赋给积累指针,验证最终调用 // 基类函数还是子类函数。 //============================================================== #ifndef ANIMAL_H #define ANIMAL_H //======...
  • 满意答案 jokxhq 2013.08.24 采纳率:59% 等级:12 已帮助:9720人 #include #include char find_char( ... //这里返回的是字符,所以函数返回类型改为char break; } } } return '\0'; //默认也要返回 } 00分享举报

    满意答案

    00e27ab806e4881f8254fe7ae8741834.png

    jokxhq

    2013.08.24

    00e27ab806e4881f8254fe7ae8741834.png

    采纳率:59%    等级:12

    已帮助:9720人

    #include

    #include

    char find_char( char const *source, char const *chars );

    int main()

    {

    char source[100]={'\0'}, chars[100]={'\0'}, find_;

    printf("Please input source and chars.\n");

    gets(source);//用gets函数输入一行字符,保存在数组source中

    gets(chars); //用gets函数输入一行字符,保存在数组chars中

    find_=find_char(source,chars);

    if(find_=='\0')

    printf("not found.");

    else

    printf("%c", find_);

    printf("\nend of program\n");

    getch(); //要包含头文件 conio.h

    return 0;

    }

    /*find_char:查找source串中是否含有chars中的任意字符,

    是则返回具体是哪个字符,否则返回'\0'*/

    char find_char( char const *source, char const *chars)

    {

    int i, j;

    for(i=0; source[i]!='\0'; i++){

    for(j=0; chars[j]!='\0'; j++){

    if(source[i] == chars[j]){

    return source[i]; //这里返回的是字符,所以函数返回类型改为char

    break;

    }

    }

    }

    return '\0'; //默认也要返回

    }

    00分享举报

    展开全文
  • int *p, *q; p=q; 这样写是什么意思?是p指向q吗?
  • 两个指针变量之间可以相互赋值,p和q都是int类型指针。 p=q表示将q所指向的int类型变量的地址赋给p 2.两个都是指针,所以是p的值等于q 如果p不是指针,那么p=q是p等于q指向的值 3.可以这样写,前提好像是q有确定的...

    两个指针变量可以相互赋值吗?
    int *p, *q;
    p=q;
    这样写是什么意思?是p指向q吗?
    答:1.两个指针变量之间可以相互赋值,p和q都是int类型的指针。
    p=q表示将q所指向的int类型变量的地址赋给p
    2.两个都是指针,所以是p的值等于q
    如果p不是指针,那么p=q是p等于q指向的值
    3.可以这样写,前提好像是
    q有确定的地址指向,然后用此语句赋值则表示,指针p和指针q指向相同的地址空间。
    4.指针也只不过是一个变量而已,只不过里面存放的是地址

    以上内容来源
    示例:

    #include<iostream>
    using namespace std;
    int main()
    {
    	int *pa;
    	int a[8]={1,2,3,4,5,6,7,8};
    	pa=a;
    	int *pb;
    	pb=pa;
    	*(pb+3)=98;
    	cout<<a[3]<<endl;
    	*(pa+6)=0;
    	cout<<a[6]<<endl;
    	
     }  
    

    输出结果:
    98
    0

    可见,pb和pa指向了同一块地址空间,用pb或者pa,都会对指向的地址空间中的数据进行操作。
    此程序较为简单,容易看懂,但是在较为复杂的程序中,例如为了提高程序可读性,或者使得代码逻辑更加清晰,使用了两个指针指向同一块地址,无论是哪个指针修改了这块地址空间的内容,结果都是修改了。

    展开全文
  • const类型指针与普通指针相互赋值

    千次阅读 2015-04-17 00:34:32
    1、将const char *p1赋给char *p2 在c语言条件下是警告,c++下面是报错...总结:说明只能条件越来越严格,不能条件越来越松(除非强制类型转换如:char *p1;const char *p2;p1=(char*)p2;)。 char *const p1赋
    1、将const char *p1赋给char *p2


    在c语言条件下是警告,c++下面是报错。

    2将char *p1赋给const char *p2
    均编译通过。

    总结:说明只能条件越来越严格,不能条件越来越松(除非强制类型转换如:char *p1;const char *p2;p1=(char*)p2;)。
    char *const  p1赋给char *p2情况类似

    备注:当然此处只是讨论指针,如果是变量只是单纯的赋值关系,互不影响
    展开全文
  • 指针间的互相赋值

    2019-07-30 14:52:00
    大标题1提出权限“概念”,大标题2验证赋值规则 大标题3、4、5是我的个人理解。 大标题6是最直接的结论。 提醒 看懂这篇文章可能需要你知道并理解四种指针的定义,这是基础。当然如果真的不懂,可以直接去文尾记住...
  • 指针变量的赋值指针变量同普通变量一样,使用之前不仅要定义说明, 而且必须赋予具体的值。未经赋值指针变量不能使用, 否则将造成系统混乱,甚至死机。指针变量的赋值只能赋予地址, 决不能赋予任何其它数据,...
  • C++不同类型数值变量之间的相互赋值,可以用以下的伪代码来描述:type1 a = ?; type2 b = ?; b = a; 或 b = (type2)a;示例:short a = 0xFF00; unsigned int b = a; cout ; cout ; cout ;一、if (sizeof(a) == siz
  • 父类指针和子类指针相互转换
  • 指针可以直接赋值吗?

    千次阅读 2020-03-16 10:52:41
    ptr = 0x111111 必然是错误的只有在强制转换右值为指针所声明类型后才能赋值,如ptr = (int *)0x111111如果是char *ptr,赋值的时候注意用ptr = (char *)0x111111就好了。同理,在进行动态内存分配的时候,如果...
  • 但是通过强制类型转换,也可以将基类指针强制转换成派生类指针后再赋值给派生类指针。只是在这种情况下,程序员需要保证被转换的基类指针本来就指向一个派生类的对象,这样才是安全的,否则很容易出错。 下面的代码...
  • 指针变量的赋值指针变量同普通变量一样,使用之前不仅要定义说明, 而且必须赋予具体的值。未经赋值指针变量不能使用, 否则将造成系统混乱,甚至死机。指针变量的赋值只能赋予地址, 决不能赋予任何其它数据,...
  • 指针的初始化和赋值

    千次阅读 多人点赞 2018-01-05 17:00:58
    1、指针的初始化 指针初始化时,“=”的右操作数必须为内存中数据的地址,不可以是变量,也不可以直接用整型地址值(但是int*p=0;除外,该语句表示指针为空)。此时,*p只是表示定义的是个指针变量,并没有间接取值的...
  • 如果已经定义了一个指针类型,我们再定义一个指针,用于指向已经定义的指针变量,后面定义的指针变量就是一个指向指针指针变量,简称指向指针指针,这样的指针也称二重(级)指针。 一、一般情况的例子: #...
  • C语言---指针变量的赋值与运算

    千次阅读 2019-09-18 16:17:25
    指针变量的赋值 指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值。未经赋值指针变量不能使用,否则将造成系统混乱,甚至死机。指针变量的赋值只能赋予地址,决不能赋予任何其它数据,否则将引起...
  • OpenCV Mat与uchar*指针相互转换赋值

    千次阅读 2020-09-15 16:08:36
    将uchar*数组内容赋值到OpenCV Mat中时,可以利用如下操作完成转换: uchar* data = [...]; Mat src(rect_height, rect_width, CV_8UC1, data);//为了显示图片 先改为mat类型 imshow("image", src); waitKey(0); ...
  • 基类指针和子类指针相互赋值

    万次阅读 2012-06-30 19:45:13
    首先,给出基类animal和子类fish //============================================================== // animal.h // ...// describe: 非虚函数情况下,将子类指针赋给积累指针,验证最终调用 //
  • C语言指针赋值

    千次阅读 2017-01-07 23:13:01
    1、指针的初始化 指针初始化时,“=”的右操作数必须为内存中数据的地址,不可以是变量,也不可以直接用整型地址值(但是int*p=0;除外,该语句表示指针为空)。此时,*p只是表示定义的是个指针变量,并没有间接取值...
  • #include <...struct Student //声明结构体类型Student { int num; char name[20]; char sex; int age; }; //下面将数据赋值 struct Student stu[5] = { {10101, "Zhou ping", 'M', 15}, //定
  • 一、数据类型封装、 二、作为 参数 或 返回值 代表无、 三、void* 指针赋值与被赋值、 四、void 类型变量不存在、
  • 前面的文章已经提出了一个关键...(其中 T表示指针指向的具体数据类型)的定义位于<memory>头文件,并位于 std 命名空间中。 所以需要在使用前包含: #include <memory> 1、shared_ptr的初始化 a. 通过如
  • 两个结构体变量的相互赋值

    千次阅读 2019-01-04 17:09:55
    下面开始讨论两个结构体变量的类型相同,即同一种类型的结构体赋值 package main import ( "fmt" "encoding/json" ) type Foo1 struct { id int m map[int]string } func main() { //funcName() //...
  • Go语言结构体(struct) Go 语言结构体 Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型. 结构体是由一系列具有相同类型不同类型的数据构成的数据集合. 结构体表示一项记录,...
  • C++中指针赋值原则

    万次阅读 多人点赞 2017-06-15 22:53:21
    指针(pointer)是“指向(point to)”另外一种类型的复合类型,它实现了对其它对象的间接访问。定义指针类型的方法将声明符写成*d的形式,其中d是变量名,如以下代码声明了一个整形指针: int *ip1;
  • 指针地址和指针类型 指针取值 指针变量初始化 指针运算符 多重指针 指针运算 到底什么是指针呢? 内存就是一系列有序列号的存储单元,变量就是编译器为内存地址分配的昵称,那么指针是什么呢? 指针就是一...
  • 指针初始化与赋值

    2019-09-26 21:34:05
    1、指针的初始化 指针初始化时,“=”的右操作数必须为内存中数据的地址,不能够是变量,也不能够直接用整型地址值(可是intp=0;除外,该语句表示指针为空)。此时,p仅仅是表示定义的是个指针变量,并没有间接取值的...
  • 深入理解C语言指针

    万次阅读 多人点赞 2019-09-28 08:36:51
    一、指针的概念 要知道指针的概念,要先了解变量在内存中如何存储的。在存储时,内存被分为一块一块的。...这段代码非常简单,就是两个变量的声明,分别赋值了 10、20。我们把内存当做一个酒店,而每个房间就...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,013
精华内容 23,605
热门标签
关键字:

不同类型的指针相互赋值